]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev: move extra_timeout_usec() to udev-config.c
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 5 Apr 2025 16:25:53 +0000 (01:25 +0900)
committerLuca Boccassi <luca.boccassi@gmail.com>
Sun, 6 Apr 2025 20:55:09 +0000 (21:55 +0100)
Then, introduce manager_kill_worker_timeout() helper function.
No functional change, just refactoring.

src/udev/udev-config.c
src/udev/udev-config.h
src/udev/udev-manager.c

index 6562b34d2f861a9adefed914ad87942c5c1ffae0..feca748f9ecdfb582e63e8c1914cd90b173a899d 100644 (file)
@@ -483,3 +483,41 @@ UdevReloadFlags manager_reload_config(Manager *manager) {
 
         return 0;
 }
+
+static usec_t extra_timeout_usec(void) {
+        static usec_t saved = 10 * USEC_PER_SEC;
+        static bool parsed = false;
+        usec_t timeout;
+        const char *e;
+        int r;
+
+        if (parsed)
+                return saved;
+
+        parsed = true;
+
+        e = getenv("SYSTEMD_UDEV_EXTRA_TIMEOUT_SEC");
+        if (!e)
+                return saved;
+
+        r = parse_sec(e, &timeout);
+        if (r < 0)
+                log_debug_errno(r, "Failed to parse $SYSTEMD_UDEV_EXTRA_TIMEOUT_SEC=%s, ignoring: %m", e);
+
+        if (timeout > 5 * USEC_PER_HOUR) /* Add an arbitrary upper bound */
+                log_debug("Parsed $SYSTEMD_UDEV_EXTRA_TIMEOUT_SEC=%s is too large, ignoring.", e);
+        else
+                saved = timeout;
+
+        return saved;
+}
+
+usec_t manager_kill_worker_timeout(Manager *manager) {
+        assert(manager);
+
+        /* Manager.timeout_usec is also used as the timeout for running programs specified in
+         * IMPORT{program}=, PROGRAM=, or RUN=. Here, let's add an extra time before the manager
+         * kills a worker, to make it possible that the worker detects timed out of spawned programs,
+         * kills them, and finalizes the event. */
+        return usec_add(manager->config.timeout_usec, extra_timeout_usec());
+}
index fd31979f6d7e9875ebc08ee6805aad3d000fa2d9..339d426a0f85536c945a3a89c93e94d3e299eedb 100644 (file)
@@ -34,3 +34,5 @@ void manager_set_environment(Manager *manager, char * const *v);
 
 int manager_load(Manager *manager, int argc, char *argv[]);
 UdevReloadFlags manager_reload_config(Manager *manager);
+
+usec_t manager_kill_worker_timeout(Manager *manager);
index eddd07854d643bb878a59f7c5f8cc08c1141e152..f053c67c8b7a1f48719a553fe1cba662e5c4ca47 100644 (file)
@@ -342,34 +342,6 @@ static int on_event_timeout_warning(sd_event_source *s, uint64_t usec, void *use
         return 1;
 }
 
-static usec_t extra_timeout_usec(void) {
-        static usec_t saved = 10 * USEC_PER_SEC;
-        static bool parsed = false;
-        usec_t timeout;
-        const char *e;
-        int r;
-
-        if (parsed)
-                return saved;
-
-        parsed = true;
-
-        e = getenv("SYSTEMD_UDEV_EXTRA_TIMEOUT_SEC");
-        if (!e)
-                return saved;
-
-        r = parse_sec(e, &timeout);
-        if (r < 0)
-                log_debug_errno(r, "Failed to parse $SYSTEMD_UDEV_EXTRA_TIMEOUT_SEC=%s, ignoring: %m", e);
-
-        if (timeout > 5 * USEC_PER_HOUR) /* Add an arbitrary upper bound */
-                log_debug("Parsed $SYSTEMD_UDEV_EXTRA_TIMEOUT_SEC=%s is too large, ignoring.", e);
-        else
-                saved = timeout;
-
-        return saved;
-}
-
 static void worker_attach_event(Worker *worker, Event *event) {
         Manager *manager = ASSERT_PTR(ASSERT_PTR(worker)->manager);
         sd_event *e = ASSERT_PTR(manager->event);
@@ -387,12 +359,8 @@ static void worker_attach_event(Worker *worker, Event *event) {
                                           udev_warn_timeout(manager->config.timeout_usec), USEC_PER_SEC,
                                           on_event_timeout_warning, event);
 
-        /* Manager.timeout_usec is also used as the timeout for running programs specified in
-         * IMPORT{program}=, PROGRAM=, or RUN=. Here, let's add an extra time before the manager
-         * kills a worker, to make it possible that the worker detects timed out of spawned programs,
-         * kills them, and finalizes the event. */
         (void) sd_event_add_time_relative(e, &event->timeout_event, CLOCK_MONOTONIC,
-                                          usec_add(manager->config.timeout_usec, extra_timeout_usec()), USEC_PER_SEC,
+                                          manager_kill_worker_timeout(manager), USEC_PER_SEC,
                                           on_event_timeout, event);
 }