1 /* SPDX-License-Identifier: LGPL-2.1-or-later */ 2 #pragma once 3 4 typedef struct Scope Scope; 5 6 #include "cgroup.h" 7 #include "kill.h" 8 #include "unit.h" 9 10 typedef enum ScopeResult { 11 SCOPE_SUCCESS, 12 SCOPE_FAILURE_RESOURCES, 13 SCOPE_FAILURE_TIMEOUT, 14 _SCOPE_RESULT_MAX, 15 _SCOPE_RESULT_INVALID = -EINVAL, 16 } ScopeResult; 17 18 struct Scope { 19 Unit meta; 20 21 CGroupContext cgroup_context; 22 KillContext kill_context; 23 24 ScopeState state, deserialized_state; 25 ScopeResult result; 26 27 usec_t runtime_max_usec; 28 usec_t runtime_rand_extra_usec; 29 usec_t timeout_stop_usec; 30 31 char *controller; 32 sd_bus_track *controller_track; 33 34 bool was_abandoned; 35 36 sd_event_source *timer_event_source; 37 }; 38 39 extern const UnitVTable scope_vtable; 40 41 int scope_abandon(Scope *s); 42 43 const char* scope_result_to_string(ScopeResult i) _const_; 44 ScopeResult scope_result_from_string(const char *s) _pure_; 45 46 DEFINE_CAST(SCOPE, Scope); 47