+/*
+ * read the kernel commandline, in case we need to get into debug mode
+ * udev.log-priority=<level> syslog priority
+ * udev.children-max=<number of workers> events are fully serialized if set to 1
+ * udev.exec-delay=<number of seconds> delay execution of every executed program
+ */
+static void kernel_cmdline_options(struct udev *udev)
+{
+ char *line, *w, *state;
+ size_t l;
+
+ if (read_one_line_file("/proc/cmdline", &line) < 0)
+ return;
+
+ FOREACH_WORD_QUOTED(w, l, line, state) {
+ char *s, *opt;
+
+ s = strndup(w, l);
+ if (!s)
+ break;
+
+ /* accept the same options for the initrd, prefixed with "rd." */
+ if (in_initrd() && startswith(s, "rd."))
+ opt = s + 3;
+ else
+ opt = s;
+
+ if (startswith(opt, "udev.log-priority="))
+ udev_set_log_priority(udev, util_log_priority(opt + 18));
+
+ if (startswith(opt, "udev.children-max="))
+ children_max = strtoul(opt + 18, NULL, 0);
+
+ if (startswith(opt, "udev.exec-delay="))
+ exec_delay = strtoul(opt + 16, NULL, 0);
+
+ free(s);
+ }
+
+ free(line);
+}
+