Re: sysfs - which driver for a device?

From: Patrick Mochel
Date: Thu Sep 25 2003 - 13:19:07 EST



> In sysfs it is easy to see which devices a driver is supporting.
> For example /sys/bus/pci/drivers/e1000 links to 0000:02:0c.0 in my system.
>
> But how do you go the other way; starting from 0000:02:0c.0 to determine the
> driver? Is the best solution to loop though the drivers directories searching
> for the device? Or would it be better to change sysfs to add an attribute to
> each device containing the driver name?

Well, one could use a script to ascertain the driver name for a given
device. Or, you could use the patch below, which will insert a 'driver'
symlink that points to the device driver's directory.


Pat

===== drivers/base/bus.c 1.51 vs edited =====
--- 1.51/drivers/base/bus.c Fri Aug 29 14:18:26 2003
+++ edited/drivers/base/bus.c Thu Sep 25 10:55:14 2003
@@ -243,6 +243,7 @@
list_add_tail(&dev->driver_list,&dev->driver->devices);
sysfs_create_link(&dev->driver->kobj,&dev->kobj,
kobject_name(&dev->kobj));
+ sysfs_create_link(&dev->kobj,&dev->driver->kobj,"driver");
}


@@ -365,6 +366,7 @@
struct device_driver * drv = dev->driver;
if (drv) {
sysfs_remove_link(&drv->kobj,kobject_name(&dev->kobj));
+ sysfs_remove_link(&dev->kobj,"driver");
list_del_init(&dev->driver_list);
device_detach_shutdown(dev);
if (drv->remove)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/