diff options
author | christophe@saout.de <christophe@saout.de> | 2004-01-10 00:55:28 -0800 |
---|---|---|
committer | Greg KH <gregkh@suse.de> | 2005-04-26 21:13:14 -0700 |
commit | f1db055ab2e349ce22254562faaece66d6a4a873 (patch) | |
tree | 4413147132819486b06f92cfec717dfb4a6d5659 /namedev.c | |
parent | c53735efc9720b28676c1b51fbed04dc592236e8 (diff) |
[PATCH] add IGNORE rule type
On Wed, Dec 31, 2003 at 11:24:53AM -0800, Greg KH wrote:
> > There should be a possibility to tell udev not to create a device node.
> >
> > device-mapper: Usually set up by libdevmapper (or EVMS tools) which
> > creates the device node on its own under /dev/mapper/<name>.
> >
> > With udev a second device is created named /dev/dm-<minor> which is not
> > really needed.
>
> Good point. Ok, I'll agree with you. Care to make up a patch for this
> kind of feature?
Yes, I can try.
There was no way to tell not to do anything so I created one. Errors
are signalled via negative return values, so I thought that a positive,
non-zero one could mean to ignore the device. I don't like it but
perhaps you have a better solution.
Diffstat (limited to 'namedev.c')
-rw-r--r-- | namedev.c | 27 |
1 files changed, 27 insertions, 0 deletions
@@ -298,6 +298,27 @@ exit: return; /* here to prevent compiler warning... */ } +static int do_ignore(struct sysfs_class_device *class_dev, struct udevice *udev, struct sysfs_device *sysfs_device) +{ + struct config_device *dev; + struct list_head *tmp; + + list_for_each(tmp, &config_device_list) { + dev = list_entry(tmp, struct config_device, node); + if (dev->type != IGNORE) + continue; + + dbg("compare name '%s' with '%s'", dev->kernel_name, class_dev->name); + if (strcmp_pattern(dev->kernel_name, class_dev->name) != 0) + continue; + + dbg("found name, '%s' will be ignored", dev->kernel_name); + + return 0; + } + return -ENODEV; +} + static int exec_callout(struct config_device *dev, char *value, int len) { int retval; @@ -734,6 +755,12 @@ int namedev_name_device(struct sysfs_class_device *class_dev, struct udevice *ud dbg("kernel_number='%s'", udev->kernel_number); /* rules are looked at in priority order */ + retval = do_ignore(class_dev, udev, sysfs_device); + if (retval == 0) { + dbg("name, '%s' is being ignored", class_dev->name); + return 1; + } + retval = do_callout(class_dev, udev, sysfs_device); if (retval == 0) goto found; |