]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core/service: introduce SERVICE_STATE_WITH_WATCHDOG
authorMike Yuan <me@yhndnzj.com>
Sun, 19 Oct 2025 18:27:42 +0000 (20:27 +0200)
committerMike Yuan <me@yhndnzj.com>
Tue, 4 Nov 2025 11:17:31 +0000 (12:17 +0100)
src/core/service.c

index 6b72d48ccd1bd2b23fd74de25fcffc53b75bf4ec..df89534a452126d131635d61971385ad38530f43 100644 (file)
@@ -151,6 +151,14 @@ static bool SERVICE_STATE_WITH_CONTROL_PROCESS(ServiceState state) {
                       SERVICE_CLEANING);
 }
 
+static bool SERVICE_STATE_WITH_WATCHDOG(ServiceState state) {
+        return IN_SET(state,
+                      SERVICE_START_POST,
+                      SERVICE_RUNNING,
+                      SERVICE_REFRESH_EXTENSIONS, SERVICE_RELOAD, SERVICE_RELOAD_SIGNAL, SERVICE_RELOAD_NOTIFY,
+                      SERVICE_MOUNTING);
+}
+
 static void service_init(Unit *u) {
         Service *s = SERVICE(u);
 
@@ -1319,7 +1327,7 @@ static void service_set_state(Service *s, ServiceState state) {
         if (state != SERVICE_START)
                 s->exec_fd_event_source = sd_event_source_disable_unref(s->exec_fd_event_source);
 
-        if (!IN_SET(state, SERVICE_START_POST, SERVICE_RUNNING, SERVICE_RELOAD, SERVICE_RELOAD_SIGNAL, SERVICE_RELOAD_NOTIFY, SERVICE_REFRESH_EXTENSIONS, SERVICE_MOUNTING))
+        if (!SERVICE_STATE_WITH_WATCHDOG(state))
                 service_stop_watchdog(s);
 
         if (state != SERVICE_MOUNTING) /* Just in case */
@@ -1431,7 +1439,7 @@ static int service_coldplug(Unit *u) {
                     SERVICE_DEAD_RESOURCES_PINNED))
                 (void) unit_setup_exec_runtime(u);
 
-        if (IN_SET(s->deserialized_state, SERVICE_START_POST, SERVICE_RUNNING, SERVICE_RELOAD, SERVICE_RELOAD_SIGNAL, SERVICE_RELOAD_NOTIFY, SERVICE_REFRESH_EXTENSIONS, SERVICE_MOUNTING) &&
+        if (SERVICE_STATE_WITH_WATCHDOG(s->deserialized_state) &&
             freezer_state_objective(u->freezer_state) == FREEZER_RUNNING)
                 service_start_watchdog(s);