X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Funit.h;h=8b242722454a14bf63bc5c00f56358af100c6a85;hb=498e87d6b7ef025fef2e089931f355b5cd3c7dad;hp=bbad546356c6114c08a2e2df4933c5b08d273661;hpb=f189ab18de69d3dee81117d7925fb370cd038f0f;p=elogind.git diff --git a/src/core/unit.h b/src/core/unit.h index bbad54635..8b2427224 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -54,6 +54,12 @@ enum UnitActiveState { _UNIT_ACTIVE_STATE_INVALID = -1 }; +typedef enum KillOperation { + KILL_TERMINATE, + KILL_KILL, + KILL_ABORT, +} KillOperation; + static inline bool UNIT_IS_ACTIVE_OR_RELOADING(UnitActiveState t) { return t == UNIT_ACTIVE || t == UNIT_RELOADING; } @@ -123,8 +129,10 @@ struct Unit { /* Conditions to check */ LIST_HEAD(Condition, conditions); + LIST_HEAD(Condition, asserts); dual_timestamp condition_timestamp; + dual_timestamp assert_timestamp; dual_timestamp inactive_exit_timestamp; dual_timestamp active_enter_timestamp; @@ -206,6 +214,7 @@ struct Unit { /* Did the last condition check succeed? */ bool condition_result; + bool assert_result; /* Is this a transient unit? */ bool transient; @@ -576,7 +585,7 @@ int unit_write_drop_in_private_format(Unit *u, UnitSetPropertiesMode mode, const int unit_remove_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *name); -int unit_kill_context(Unit *u, KillContext *c, bool sigkill, pid_t main_pid, pid_t control_pid, bool main_pid_alien); +int unit_kill_context(Unit *u, KillContext *c, KillOperation k, pid_t main_pid, pid_t control_pid, bool main_pid_alien); int unit_make_transient(Unit *u);