From: Mike Yuan Date: Tue, 18 Feb 2025 16:06:19 +0000 (+0100) Subject: process-util: introduce SIGINFO_CODE_IS_DEAD helper X-Git-Tag: v258-rc1~1272^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=37149e692a6ccf2187fa2df8bde4d59b12d979bd;p=thirdparty%2Fsystemd.git process-util: introduce SIGINFO_CODE_IS_DEAD helper --- diff --git a/src/basic/process-util.h b/src/basic/process-util.h index c9b35d79f02..c3b86f064fa 100644 --- a/src/basic/process-util.h +++ b/src/basic/process-util.h @@ -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 { diff --git a/src/core/manager.c b/src/core/manager.c index 72b9290dc02..c5fd03e42b7 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -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); diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c index 3d1b6fb2285..f2abbb1b516 100644 --- a/src/libsystemd/sd-event/sd-event.c +++ b/src/libsystemd/sd-event/sd-event.c @@ -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);