]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev: merge manager_init() into manager_main()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 8 Apr 2025 20:44:36 +0000 (05:44 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 8 Apr 2025 23:57:21 +0000 (08:57 +0900)
It is not necessary to read cgroup path and passed fds earlier,
especially when legacy --daemon option is specified.

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

index 13ae360aa9f3d09cc0e24b4eb5e5c3744797e3fd..1ff03bb5a3762680903ed40a9fcd746bfbcb2930 100644 (file)
@@ -1087,27 +1087,6 @@ static int manager_listen_fds(Manager *manager) {
         return 0;
 }
 
-int manager_init(Manager *manager) {
-        int r;
-
-        assert(manager);
-
-        r = manager_listen_fds(manager);
-        if (r < 0)
-                return log_error_errno(r, "Failed to listen on fds: %m");
-
-        _cleanup_free_ char *cgroup = NULL;
-        r = cg_pid_get_path(SYSTEMD_CGROUP_CONTROLLER, 0, &cgroup);
-        if (r < 0)
-                log_debug_errno(r, "Failed to get cgroup, ignoring: %m");
-        else if (endswith(cgroup, "/udev")) { /* If we are in a subcgroup /udev/ we assume it was delegated to us */
-                log_debug("Running in delegated subcgroup '%s'.", cgroup);
-                manager->cgroup = TAKE_PTR(cgroup);
-        }
-
-        return 0;
-}
-
 static int manager_start_device_monitor(Manager *manager) {
         int r;
 
@@ -1205,10 +1184,23 @@ int manager_main(Manager *manager) {
 
         assert(manager);
 
+        _cleanup_free_ char *cgroup = NULL;
+        r = cg_pid_get_path(SYSTEMD_CGROUP_CONTROLLER, 0, &cgroup);
+        if (r < 0)
+                log_debug_errno(r, "Failed to get cgroup, ignoring: %m");
+        else if (endswith(cgroup, "/udev")) { /* If we are in a subcgroup /udev/ we assume it was delegated to us */
+                log_debug("Running in delegated subcgroup '%s'.", cgroup);
+                manager->cgroup = TAKE_PTR(cgroup);
+        }
+
         r = manager_setup_event(manager);
         if (r < 0)
                 return r;
 
+        r = manager_listen_fds(manager);
+        if (r < 0)
+                return r;
+
         r = manager_start_ctrl(manager);
         if (r < 0)
                 return r;
index 9467508848f0d3d33d702e1b26ee48de4c06732d..fc2df313e2582bf75196c61b45cdcf8ad266d8e2 100644 (file)
@@ -68,7 +68,6 @@ Manager* manager_new(void);
 Manager* manager_free(Manager *manager);
 DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
 
-int manager_init(Manager *manager);
 int manager_main(Manager *manager);
 void manager_reload(Manager *manager, bool force);
 void manager_exit(Manager *manager);
index 1dfbc1f47811238463f68c02b8199378dcf8a031..499fb0490300f02b7177c9ed2deca2548c925c0d 100644 (file)
@@ -51,10 +51,6 @@ int run_udevd(int argc, char *argv[]) {
         if (r < 0 && r != -EEXIST)
                 return log_error_errno(r, "Failed to create /run/udev: %m");
 
-        r = manager_init(manager);
-        if (r < 0)
-                return r;
-
         if (arg_daemonize) {
                 pid_t pid;