chiark / gitweb /
[PATCH] add support for UDEV_NO_SLEEP env variable so Gentoo people will be happy.
authorgreg@kroah.com <greg@kroah.com>
Wed, 18 Feb 2004 04:59:26 +0000 (20:59 -0800)
committerGreg KH <gregkh@suse.de>
Wed, 27 Apr 2005 04:32:28 +0000 (21:32 -0700)
Actually, I'm happy to, startup time is much smaller...

namedev.c
udev.h
udev_config.c

index 186a9f5cc25fdec1afa5bb4d51d71c495300d55d..90c85d41e4d8571926bae2233adc8559cfa3c919 100644 (file)
--- a/namedev.c
+++ b/namedev.c
@@ -623,7 +623,8 @@ static struct sysfs_device *get_sysfs_device(struct sysfs_class_device *class_de
        tspec.tv_nsec = 10000000;  /* sleep 10 millisec */
        loop = 10;
        while (loop--) {
-               nanosleep(&tspec, NULL);
+               if (udev_sleep)
+                       nanosleep(&tspec, NULL);
                if (class_dev_parent)
                        sysfs_device = sysfs_get_classdev_device(class_dev_parent);
                else
@@ -650,7 +651,8 @@ device_found:
                loop = 10;
                tspec.tv_nsec = 10000000;
                while (loop--) {
-                       nanosleep(&tspec, NULL);
+                       if (udev_sleep)
+                               nanosleep(&tspec, NULL);
                        sysfs_get_device_bus(sysfs_device);
                        
                        if (sysfs_device->bus[0] != '\0')
diff --git a/udev.h b/udev.h
index e8f93ad5ada2c49fb8076742a50bf14bddaad906..1cd07852b41eea82e4361443e0694faba7b714e8 100644 (file)
--- a/udev.h
+++ b/udev.h
@@ -78,5 +78,6 @@ extern char default_mode_str[MODE_SIZE];
 extern char default_owner_str[OWNER_SIZE];
 extern char default_group_str[GROUP_SIZE];
 extern int udev_log;
+extern int udev_sleep;
 
 #endif
index 34ef82b8812c24220819c9ff9f85ab923fa0fa22..6714c1b73d50857a72e38870b466e047db554e29 100644 (file)
@@ -49,6 +49,7 @@ char default_mode_str[MODE_SIZE];
 char default_owner_str[OWNER_SIZE];
 char default_group_str[GROUP_SIZE];
 int udev_log;
+int udev_sleep;
 
 
 static int string_is_true(char *str)
@@ -71,6 +72,10 @@ static void init_variables(void)
        strfieldcpy(udev_rules_filename, UDEV_RULES_FILE);
        strfieldcpy(udev_permissions_filename, UDEV_PERMISSION_FILE);
        udev_log = string_is_true(UDEV_LOG_DEFAULT);
+
+       udev_sleep = 1;
+       if (getenv("UDEV_NO_SLEEP") != NULL)
+               udev_sleep = 0;
 }
 
 #define set_var(_name, _var)                           \