chiark / gitweb /
libudev: enumerate - scan /sys/module
authorKay Sievers <kay.sievers@vrfy.org>
Sat, 18 Jun 2011 20:50:55 +0000 (22:50 +0200)
committerKay Sievers <kay.sievers@vrfy.org>
Sat, 18 Jun 2011 20:50:55 +0000 (22:50 +0200)
Makefile.am
libudev/libudev-enumerate.c

index 3ea96df90f8cfd3b4e819a216a96d2befbb6477c..0ca351c82d8d81d7f654c3dc30ac3b0150e0529b 100644 (file)
@@ -42,7 +42,7 @@ dist_libexec_SCRIPTS =
 # libudev
 # ------------------------------------------------------------------------------
 LIBUDEV_CURRENT=11
 # libudev
 # ------------------------------------------------------------------------------
 LIBUDEV_CURRENT=11
-LIBUDEV_REVISION=5
+LIBUDEV_REVISION=6
 LIBUDEV_AGE=11
 
 SUBDIRS += libudev/docs
 LIBUDEV_AGE=11
 
 SUBDIRS += libudev/docs
index 6e51726f083cd0cd8b72084d2b75876181fcc270..0b028bab8477614c2ffb5b2531a5613bf7ff69fa 100644 (file)
@@ -814,15 +814,25 @@ UDEV_EXPORT int udev_enumerate_scan_subsystems(struct udev_enumerate *udev_enume
        if (udev_enumerate == NULL)
                return -EINVAL;
 
        if (udev_enumerate == NULL)
                return -EINVAL;
 
+       /* all kernel modules */
+       if (match_subsystem(udev_enumerate, "module")) {
+               dbg(udev, "searching '%s/modules/*' dir\n", subsysdir);
+               scan_dir_and_add_devices(udev_enumerate, "module", NULL, NULL);
+       }
+
        util_strscpyl(base, sizeof(base), udev_get_sys_path(udev), "/subsystem", NULL);
        if (stat(base, &statbuf) == 0)
                subsysdir = "subsystem";
        else
                subsysdir = "bus";
        util_strscpyl(base, sizeof(base), udev_get_sys_path(udev), "/subsystem", NULL);
        if (stat(base, &statbuf) == 0)
                subsysdir = "subsystem";
        else
                subsysdir = "bus";
+
+       /* all subsystems (only buses support coldplug) */
        if (match_subsystem(udev_enumerate, "subsystem")) {
                dbg(udev, "searching '%s/*' dir\n", subsysdir);
                scan_dir_and_add_devices(udev_enumerate, subsysdir, NULL, NULL);
        }
        if (match_subsystem(udev_enumerate, "subsystem")) {
                dbg(udev, "searching '%s/*' dir\n", subsysdir);
                scan_dir_and_add_devices(udev_enumerate, subsysdir, NULL, NULL);
        }
+
+       /* all subsystem drivers */
        if (match_subsystem(udev_enumerate, "drivers")) {
                dbg(udev, "searching '%s/*/drivers/*' dir\n", subsysdir);
                scan_dir(udev_enumerate, subsysdir, "drivers", "drivers");
        if (match_subsystem(udev_enumerate, "drivers")) {
                dbg(udev, "searching '%s/*/drivers/*' dir\n", subsysdir);
                scan_dir(udev_enumerate, subsysdir, "drivers", "drivers");