/* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once typedef struct KillContext KillContext; #include #include #include "macro.h" typedef enum KillMode { /* The kill mode is a property of a unit. */ KILL_CONTROL_GROUP = 0, KILL_PROCESS, KILL_MIXED, KILL_NONE, _KILL_MODE_MAX, _KILL_MODE_INVALID = -EINVAL, } KillMode; struct KillContext { KillMode kill_mode; int kill_signal; int restart_kill_signal; int final_kill_signal; int watchdog_signal; bool send_sigkill; bool send_sighup; }; typedef enum KillWho { /* Kill who is a property of an operation */ KILL_MAIN, KILL_CONTROL, KILL_ALL, KILL_MAIN_FAIL, KILL_CONTROL_FAIL, KILL_ALL_FAIL, _KILL_WHO_MAX, _KILL_WHO_INVALID = -EINVAL, } KillWho; void kill_context_init(KillContext *c); void kill_context_dump(KillContext *c, FILE *f, const char *prefix); const char *kill_mode_to_string(KillMode k) _const_; KillMode kill_mode_from_string(const char *s) _pure_; const char *kill_who_to_string(KillWho k) _const_; KillWho kill_who_from_string(const char *s) _pure_; static inline int restart_kill_signal(const KillContext *c) { if (c->restart_kill_signal != 0) return c->restart_kill_signal; return c->kill_signal; }