From 1cbbb05bc76015bb6f48c217453e98a73cc30344 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Mon, 6 Oct 2025 02:27:55 +0200 Subject: [PATCH] unit-def: introduce freezer_state_objective() No functional change, preparation for later commits. --- src/basic/unit-def.c | 10 ++++++++++ src/basic/unit-def.h | 1 + src/core/service.c | 4 ++-- src/core/unit.c | 4 +--- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/basic/unit-def.c b/src/basic/unit-def.c index 04b096cd197..a2b2f9d6f05 100644 --- a/src/basic/unit-def.c +++ b/src/basic/unit-def.c @@ -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", diff --git a/src/basic/unit-def.h b/src/basic/unit-def.h index e0b1c6730d8..7ae086c0b9f 100644 --- a/src/basic/unit-def.h +++ b/src/basic/unit-def.h @@ -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_; diff --git a/src/core/service.c b/src/core/service.c index c8cda060994..90e548a842d 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -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)) { diff --git a/src/core/unit.c b/src/core/unit.c index a4ddf4d91e9..da02a252e5a 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -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; -- 2.47.3