Re: libudev, a question about the enumerate API.
From: Kay Sievers <hidden>
Date: 2011-03-07 16:11:29
On Mon, Mar 7, 2011 at 17:01, Alan Ott [off-list ref] wrote:
On 03/07/2011 10:27 AM, Kay Sievers wrote:quoted
The usual enumeration in udev never uses the device tree in /sys/devices/, only the subsystem lists /sys/{class,bus}/. We could have something to enumerate all child devices of a given device. It's not simple, but could be made working.
The documentation in Documentation/sysfs-rules.txt seems to warn against using /sys/class and sys/bus: - devices are only "devices" There is no such thing like class-, bus-, physical devices, interfaces, and such that you can rely on in userspace. Everything is just simply a "device". Class-, bus-, physical, ... types are just kernel implementation details which should not be expected by applications that look for devices in sysfs. ... - all elements of a devpath must be real directories. Symlinks pointing to /sys/devices must always be resolved to their real target and the target path must be used to access the device. That way the devpath to the device matches the devpath of the kernel used at event time. - using or exposing symlink values as elements in a devpath string is a bug in the application ... - accessing attributes reached by a symlink pointing to another device, like the "device"-link, is a bug in the application ... - Hierarchy in a single device tree There is only one valid place in sysfs where hierarchy can be examined and this is below: /sys/devices. and more... I figured that this document was probably out of date, since even libudev uses /sys/class. What's your take on this document?
I wrote that document. :) It's partly out-of-date, but this is still true.
Udev, since quite some years, even the old and dead HAL supports
/sys/subsystem/ already, which is not in the kernel today, but might
be soon.
If that directory is available, /sys/{class,bus}/ will not be looked at:
http://git.kernel.org/?p=linux/hotplug/udev.git;a=blob;f=libudev/libudev-enumerate.c;h=128813c7d618717690f79d0eca82776a6c4fa011;hb=HEAD#l776
Kay
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html