]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
unit-def: introduce freezer_state_objective()
authorMike Yuan <me@yhndnzj.com>
Mon, 6 Oct 2025 00:27:55 +0000 (02:27 +0200)
committerMike Yuan <me@yhndnzj.com>
Mon, 6 Oct 2025 00:40:01 +0000 (02:40 +0200)
No functional change, preparation for later commits.

src/basic/unit-def.c
src/basic/unit-def.h
src/core/service.c
src/core/unit.c

index 04b096cd197be4b2cf8be13430d742adde14b6ff..a2b2f9d6f05decb9b0fb886850d6e0a0cb97fe39 100644 (file)
@@ -144,6 +144,16 @@ FreezerState freezer_state_finish(FreezerState state) {
         return freezer_state_finish_table[state];
 }
 
+FreezerState freezer_state_objective(FreezerState state) {
+        FreezerState objective;
+
+        objective = freezer_state_finish(state);
+        if (objective == FREEZER_FROZEN_BY_PARENT)
+                objective = FREEZER_FROZEN;
+
+        return objective;
+}
+
 static const char* const unit_marker_table[_UNIT_MARKER_MAX] = {
         [UNIT_MARKER_NEEDS_RELOAD]  = "needs-reload",
         [UNIT_MARKER_NEEDS_RESTART] = "needs-restart",
index e0b1c6730d84824e030e05731b26c33e85da03a8..7ae086c0b9fe1ac0ce1687c5961a482476d1eb7e 100644 (file)
@@ -325,6 +325,7 @@ UnitActiveState unit_active_state_from_string(const char *s) _pure_;
 const char* freezer_state_to_string(FreezerState i) _const_;
 FreezerState freezer_state_from_string(const char *s) _pure_;
 FreezerState freezer_state_finish(FreezerState i) _const_;
+FreezerState freezer_state_objective(FreezerState state) _const_;
 
 const char* unit_marker_to_string(UnitMarker m) _const_;
 UnitMarker unit_marker_from_string(const char *s) _pure_;
index c8cda0609942fcda179a8d62828976d9c3fdd71c..90e548a842dfc84a7b3aaf6e93da3eff02765249 100644 (file)
@@ -414,7 +414,7 @@ static void service_extend_timeout(Service *s, usec_t extend_timeout_usec) {
 static void service_reset_watchdog(Service *s) {
         assert(s);
 
-        if (freezer_state_finish(UNIT(s)->freezer_state) != FREEZER_RUNNING) {
+        if (freezer_state_objective(UNIT(s)->freezer_state) != FREEZER_RUNNING) {
                 log_unit_debug(UNIT(s), "Service is currently %s, skipping resetting watchdog.",
                                freezer_state_to_string(UNIT(s)->freezer_state));
                 return;
@@ -1425,7 +1425,7 @@ static int service_coldplug(Unit *u) {
                 (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) &&
-            freezer_state_finish(u->freezer_state) == FREEZER_RUNNING)
+            freezer_state_objective(u->freezer_state) == FREEZER_RUNNING)
                 service_start_watchdog(s);
 
         if (UNIT_ISSET(s->accept_socket)) {
index a4ddf4d91e948c4eaf18791725b46b2632e9b22a..da02a252e5ad894c9240bfe6bfde6303d1c928f1 100644 (file)
@@ -6438,9 +6438,7 @@ void unit_next_freezer_state(Unit *u, FreezerAction action, FreezerState *ret_ne
                 assert_not_reached();
         }
 
-        objective = freezer_state_finish(next);
-        if (objective == FREEZER_FROZEN_BY_PARENT)
-                objective = FREEZER_FROZEN;
+        objective = freezer_state_objective(next);
         assert(IN_SET(objective, FREEZER_RUNNING, FREEZER_FROZEN));
 
         *ret_next = next;