- /* get current time to provide shorter timeout on startup */
- sysinfo(&info);
- startup_time = info.uptime;
-
- FD_ZERO(&readfds);
- FD_SET(udevd_sock, &readfds);
- if (uevent_nl_sock != -1)
- FD_SET(uevent_nl_sock, &readfds);
- FD_SET(pipefds[0], &readfds);
- maxsockplus = udevd_sock+1;
- while (1) {
+ /* timeout to wait for missing events */
+ value = getenv("UDEVD_EVENT_TIMEOUT");
+ if (value)
+ event_timeout = strtoul(value, NULL, 10);
+ else
+ event_timeout = UDEVD_EVENT_TIMEOUT;
+ info("initialize event_timeout to %u", event_timeout);
+
+ /* maximum limit of forked childs */
+ value = getenv("UDEVD_MAX_CHILDS");
+ if (value)
+ max_childs = strtoul(value, NULL, 10);
+ else
+ max_childs = UDEVD_MAX_CHILDS;
+ info("initialize max_childs to %u", max_childs);
+
+ /* start to throttle forking if maximum number of _running_ childs is reached */
+ value = getenv("UDEVD_MAX_CHILDS_RUNNING");
+ if (value)
+ max_childs_running = strtoull(value, NULL, 10);
+ else
+ max_childs_running = UDEVD_MAX_CHILDS_RUNNING;
+ info("initialize max_childs_running to %u", max_childs_running);
+
+ /* export log_priority , as called programs may want to follow that setting */
+ sprintf(log, "UDEV_LOG=%i", udev_log_priority);
+ putenv(log);
+
+ while (!udev_exit) {