]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
process-util: introduce SIGINFO_CODE_IS_DEAD helper
authorMike Yuan <me@yhndnzj.com>
Tue, 18 Feb 2025 16:06:19 +0000 (17:06 +0100)
committerMike Yuan <me@yhndnzj.com>
Fri, 21 Feb 2025 17:08:02 +0000 (18:08 +0100)
src/basic/process-util.h
src/core/manager.c
src/libsystemd/sd-event/sd-event.c

index c9b35d79f02756289e3c027abea2c5743b098953..c3b86f064fa7c33940783ceaa37625e9ea3fd7a8 100644 (file)
@@ -61,6 +61,10 @@ int get_process_umask(pid_t pid, mode_t *ret);
 
 int container_get_leader(const char *machine, pid_t *pid);
 
+static inline bool SIGINFO_CODE_IS_DEAD(int code) {
+        return IN_SET(code, CLD_EXITED, CLD_KILLED, CLD_DUMPED);
+}
+
 int wait_for_terminate(pid_t pid, siginfo_t *status);
 
 typedef enum WaitFlags {
index 72b9290dc021c44575cf7d8ee92f015763d587aa..c5fd03e42b7a397aaac15f81616c4443362f2dc0 100644 (file)
@@ -2990,7 +2990,7 @@ static int manager_dispatch_sigchld(sd_event_source *source, void *userdata) {
         if (si.si_pid <= 0)
                 goto turn_off;
 
-        if (IN_SET(si.si_code, CLD_EXITED, CLD_KILLED, CLD_DUMPED)) {
+        if (SIGINFO_CODE_IS_DEAD(si.si_code)) {
                 _cleanup_free_ char *name = NULL;
                 (void) pid_get_comm(si.si_pid, &name);
 
index 3d1b6fb2285a96722c836f352ee0cd2fe504f4ac..f2abbb1b51603ced7a214dc68d9617991949bbb5 100644 (file)
@@ -3760,7 +3760,7 @@ static int process_child(sd_event *e, int64_t threshold, int64_t *ret_min_priori
                         return negative_errno();
 
                 if (s->child.siginfo.si_pid != 0) {
-                        bool zombie = IN_SET(s->child.siginfo.si_code, CLD_EXITED, CLD_KILLED, CLD_DUMPED);
+                        bool zombie = SIGINFO_CODE_IS_DEAD(s->child.siginfo.si_code);
 
                         if (zombie)
                                 s->child.exited = true;
@@ -3809,7 +3809,7 @@ static int process_pidfd(sd_event *e, sd_event_source *s, uint32_t revents) {
         if (s->child.siginfo.si_pid == 0)
                 return 0;
 
-        if (IN_SET(s->child.siginfo.si_code, CLD_EXITED, CLD_KILLED, CLD_DUMPED))
+        if (SIGINFO_CODE_IS_DEAD(s->child.siginfo.si_code))
                 s->child.exited = true;
 
         return source_set_pending(s, true);
@@ -4222,9 +4222,7 @@ static int source_dispatch(sd_event_source *s) {
                 break;
 
         case SOURCE_CHILD: {
-                bool zombie;
-
-                zombie = IN_SET(s->child.siginfo.si_code, CLD_EXITED, CLD_KILLED, CLD_DUMPED);
+                bool zombie = SIGINFO_CODE_IS_DEAD(s->child.siginfo.si_code);
 
                 r = s->child.callback(s, &s->child.siginfo, s->userdata);