-/* print all class/main block devices with major/minor, physical device, driver and bus */
-static int print_sysfs_devices(void)
-{
- struct dlist *subsyslist;
- char *class;
-
- subsyslist = sysfs_open_subsystem_list("class");
- if (!subsyslist)
- return -1;
-
- dlist_for_each_data(subsyslist, class, char) {
- struct sysfs_class *cls;
- struct dlist *class_devices;
- struct sysfs_class_device *class_dev;
- struct sysfs_device *phys_dev;
- struct sysfs_driver *driver;
-
- cls = sysfs_open_class(class);
- if (!cls)
- continue;
-
- class_devices = sysfs_get_class_devices(cls);
- if (!class_devices)
- continue;
-
- dlist_for_each_data(class_devices, class_dev, struct sysfs_class_device) {
- struct sysfs_attribute *attr;
-
- printf("\n");
- printf("DEVPATH '%s'\n", class_dev->path);
- printf("SUBSYSTEM '%s'\n", class_dev->classname);
-
- attr = sysfs_get_classdev_attr(class_dev, "dev");
- if (attr) {
- char *pos = &(attr->value[strlen(attr->value)-1]);
-
- if (pos[0] == '\n')
- pos[0] = '\0';
-
- printf("DEVMAJORMINOR '%s'\n", attr->value);
- }
-
- driver = sysfs_get_classdev_driver(class_dev);
- if (driver)
- printf("DEVDRIVER '%s'\n", driver->name);
-
- phys_dev = sysfs_get_classdev_device(class_dev);
- if (phys_dev) {
- printf("PHYSDEVPATH '%s'\n", phys_dev->path);
- if (phys_dev->bus[0] != '\0')
- printf("PHYSDEVBUS '%s'\n", phys_dev->bus);
- }
- }
- sysfs_close_class(cls);
- }
- sysfs_close_list(subsyslist);
-