udevd: allow starting of udevd with stopped exec-queue

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
This commit is contained in:
Kay Sievers 2005-06-08 11:57:53 +02:00
parent 9607c4222c
commit 561d4c5a3a
3 changed files with 18 additions and 8 deletions

0
test/simple-build-check.sh Normal file → Executable file
View file

16
udevd.c
View file

@ -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();

View file

@ -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);