From 561d4c5a3a66830ecfb92fdfd7ccee19cf01c2a7 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 8 Jun 2005 11:57:53 +0200 Subject: [PATCH] udevd: allow starting of udevd with stopped exec-queue Signed-off-by: Kay Sievers --- test/simple-build-check.sh | 0 udevd.c | 16 ++++++++++++++-- udevstart.c | 10 ++++------ 3 files changed, 18 insertions(+), 8 deletions(-) mode change 100644 => 100755 test/simple-build-check.sh diff --git a/test/simple-build-check.sh b/test/simple-build-check.sh old mode 100644 new mode 100755 diff --git a/udevd.c b/udevd.c index b5597eab..6fb0bd94 100644 --- a/udevd.c +++ b/udevd.c @@ -766,6 +766,8 @@ int main(int argc, char *argv[], char *envp[]) fd_set readfds; const char *value; int uevent_nl_active = 0; + int daemonize = 0; + int i; logging_init("udevd"); udev_init_config(); @@ -776,8 +778,18 @@ int main(int argc, char *argv[], char *envp[]) goto exit; } - /* daemonize on request */ - if (argc == 2 && strcmp(argv[1], "-d") == 0) { + for (i = 1 ; i < argc; i++) { + char *arg = argv[i]; + if (strcmp(arg, "--daemon") == 0 || strcmp(arg, "-d") == 0) { + info("will daemonize"); + daemonize = 1; + } + if (strcmp(arg, "--stop-exec-queue") == 0) { + info("will not execute event until START_EXEC_QUEUE is received"); + stop_exec_q = 1; + } + } + if (daemonize) { pid_t pid; pid = fork(); diff --git a/udevstart.c b/udevstart.c index d1a0a837..bd91e96f 100644 --- a/udevstart.c +++ b/udevstart.c @@ -117,30 +117,29 @@ static int add_device(const char *path, const char *subsystem) class_dev = sysfs_open_class_device_path(path); if (class_dev == NULL) { - dbg ("sysfs_open_class_device_path failed"); + dbg("sysfs_open_class_device_path failed"); return -1; } udev_init_device(&udev, devpath, subsystem, "add"); udev.devt = get_devt(class_dev); if (!udev.devt) { - dbg ("sysfs_open_class_device_path failed"); + dbg("sysfs_open_class_device_path failed"); return -1; } udev_rules_get_name(&udev, class_dev); if (udev.ignore_device) { - info("device event will be ignored"); + dbg("device event will be ignored"); goto exit; } if (udev.name[0] == '\0') { - info("device node creation supressed"); + dbg("device node creation supressed"); goto run; } udev_add_device(&udev, class_dev); if (udev.devname[0] != '\0') setenv("DEVNAME", udev.devname, 1); - run: if (udev_run && !list_empty(&udev.run_list)) { struct name_entry *name_loop; @@ -149,7 +148,6 @@ run: list_for_each_entry(name_loop, &udev.run_list, node) execute_command(name_loop->name, udev.subsystem); } - exit: sysfs_close_class_device(class_dev); udev_cleanup_device(&udev); -- 2.39.5