summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--namedev.c6
-rw-r--r--udev.h1
-rw-r--r--udev_config.c5
3 files changed, 10 insertions, 2 deletions
diff --git a/namedev.c b/namedev.c
index 186a9f5cc2..90c85d41e4 100644
--- 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 e8f93ad5ad..1cd07852b4 100644
--- 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
diff --git a/udev_config.c b/udev_config.c
index 34ef82b881..6714c1b73d 100644
--- a/udev_config.c
+++ b/udev_config.c
@@ -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) \