]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/basic/unit-def.h
Merge pull request #8700 from keszybz/hibernation
[thirdparty/systemd.git] / src / basic / unit-def.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
2 #pragma once
3
4 /***
5 This file is part of systemd.
6
7 Copyright 2010 Lennart Poettering
8 ***/
9
10 #include <stdbool.h>
11
12 #include "macro.h"
13
14 typedef enum UnitType {
15 UNIT_SERVICE = 0,
16 UNIT_SOCKET,
17 UNIT_TARGET,
18 UNIT_DEVICE,
19 UNIT_MOUNT,
20 UNIT_AUTOMOUNT,
21 UNIT_SWAP,
22 UNIT_TIMER,
23 UNIT_PATH,
24 UNIT_SLICE,
25 UNIT_SCOPE,
26 _UNIT_TYPE_MAX,
27 _UNIT_TYPE_INVALID = -1
28 } UnitType;
29
30 typedef enum UnitLoadState {
31 UNIT_STUB = 0,
32 UNIT_LOADED,
33 UNIT_NOT_FOUND,
34 UNIT_ERROR,
35 UNIT_MERGED,
36 UNIT_MASKED,
37 _UNIT_LOAD_STATE_MAX,
38 _UNIT_LOAD_STATE_INVALID = -1
39 } UnitLoadState;
40
41 typedef enum UnitActiveState {
42 UNIT_ACTIVE,
43 UNIT_RELOADING,
44 UNIT_INACTIVE,
45 UNIT_FAILED,
46 UNIT_ACTIVATING,
47 UNIT_DEACTIVATING,
48 _UNIT_ACTIVE_STATE_MAX,
49 _UNIT_ACTIVE_STATE_INVALID = -1
50 } UnitActiveState;
51
52 typedef enum AutomountState {
53 AUTOMOUNT_DEAD,
54 AUTOMOUNT_WAITING,
55 AUTOMOUNT_RUNNING,
56 AUTOMOUNT_FAILED,
57 _AUTOMOUNT_STATE_MAX,
58 _AUTOMOUNT_STATE_INVALID = -1
59 } AutomountState;
60
61 /* We simply watch devices, we cannot plug/unplug them. That
62 * simplifies the state engine greatly */
63 typedef enum DeviceState {
64 DEVICE_DEAD,
65 DEVICE_TENTATIVE, /* mounted or swapped, but not (yet) announced by udev */
66 DEVICE_PLUGGED, /* announced by udev */
67 _DEVICE_STATE_MAX,
68 _DEVICE_STATE_INVALID = -1
69 } DeviceState;
70
71 typedef enum MountState {
72 MOUNT_DEAD,
73 MOUNT_MOUNTING, /* /usr/bin/mount is running, but the mount is not done yet. */
74 MOUNT_MOUNTING_DONE, /* /usr/bin/mount is running, and the mount is done. */
75 MOUNT_MOUNTED,
76 MOUNT_REMOUNTING,
77 MOUNT_UNMOUNTING,
78 MOUNT_REMOUNTING_SIGTERM,
79 MOUNT_REMOUNTING_SIGKILL,
80 MOUNT_UNMOUNTING_SIGTERM,
81 MOUNT_UNMOUNTING_SIGKILL,
82 MOUNT_FAILED,
83 _MOUNT_STATE_MAX,
84 _MOUNT_STATE_INVALID = -1
85 } MountState;
86
87 typedef enum PathState {
88 PATH_DEAD,
89 PATH_WAITING,
90 PATH_RUNNING,
91 PATH_FAILED,
92 _PATH_STATE_MAX,
93 _PATH_STATE_INVALID = -1
94 } PathState;
95
96 typedef enum ScopeState {
97 SCOPE_DEAD,
98 SCOPE_RUNNING,
99 SCOPE_ABANDONED,
100 SCOPE_STOP_SIGTERM,
101 SCOPE_STOP_SIGKILL,
102 SCOPE_FAILED,
103 _SCOPE_STATE_MAX,
104 _SCOPE_STATE_INVALID = -1
105 } ScopeState;
106
107 typedef enum ServiceState {
108 SERVICE_DEAD,
109 SERVICE_START_PRE,
110 SERVICE_START,
111 SERVICE_START_POST,
112 SERVICE_RUNNING,
113 SERVICE_EXITED, /* Nothing is running anymore, but RemainAfterExit is true hence this is OK */
114 SERVICE_RELOAD,
115 SERVICE_STOP, /* No STOP_PRE state, instead just register multiple STOP executables */
116 SERVICE_STOP_SIGABRT, /* Watchdog timeout */
117 SERVICE_STOP_SIGTERM,
118 SERVICE_STOP_SIGKILL,
119 SERVICE_STOP_POST,
120 SERVICE_FINAL_SIGTERM, /* In case the STOP_POST executable hangs, we shoot that down, too */
121 SERVICE_FINAL_SIGKILL,
122 SERVICE_FAILED,
123 SERVICE_AUTO_RESTART,
124 _SERVICE_STATE_MAX,
125 _SERVICE_STATE_INVALID = -1
126 } ServiceState;
127
128 typedef enum SliceState {
129 SLICE_DEAD,
130 SLICE_ACTIVE,
131 _SLICE_STATE_MAX,
132 _SLICE_STATE_INVALID = -1
133 } SliceState;
134
135 typedef enum SocketState {
136 SOCKET_DEAD,
137 SOCKET_START_PRE,
138 SOCKET_START_CHOWN,
139 SOCKET_START_POST,
140 SOCKET_LISTENING,
141 SOCKET_RUNNING,
142 SOCKET_STOP_PRE,
143 SOCKET_STOP_PRE_SIGTERM,
144 SOCKET_STOP_PRE_SIGKILL,
145 SOCKET_STOP_POST,
146 SOCKET_FINAL_SIGTERM,
147 SOCKET_FINAL_SIGKILL,
148 SOCKET_FAILED,
149 _SOCKET_STATE_MAX,
150 _SOCKET_STATE_INVALID = -1
151 } SocketState;
152
153 typedef enum SwapState {
154 SWAP_DEAD,
155 SWAP_ACTIVATING, /* /sbin/swapon is running, but the swap not yet enabled. */
156 SWAP_ACTIVATING_DONE, /* /sbin/swapon is running, and the swap is done. */
157 SWAP_ACTIVE,
158 SWAP_DEACTIVATING,
159 SWAP_DEACTIVATING_SIGTERM,
160 SWAP_DEACTIVATING_SIGKILL,
161 SWAP_FAILED,
162 _SWAP_STATE_MAX,
163 _SWAP_STATE_INVALID = -1
164 } SwapState;
165
166 typedef enum TargetState {
167 TARGET_DEAD,
168 TARGET_ACTIVE,
169 _TARGET_STATE_MAX,
170 _TARGET_STATE_INVALID = -1
171 } TargetState;
172
173 typedef enum TimerState {
174 TIMER_DEAD,
175 TIMER_WAITING,
176 TIMER_RUNNING,
177 TIMER_ELAPSED,
178 TIMER_FAILED,
179 _TIMER_STATE_MAX,
180 _TIMER_STATE_INVALID = -1
181 } TimerState;
182
183 typedef enum UnitDependency {
184 /* Positive dependencies */
185 UNIT_REQUIRES,
186 UNIT_REQUISITE,
187 UNIT_WANTS,
188 UNIT_BINDS_TO,
189 UNIT_PART_OF,
190
191 /* Inverse of the above */
192 UNIT_REQUIRED_BY, /* inverse of 'requires' is 'required_by' */
193 UNIT_REQUISITE_OF, /* inverse of 'requisite' is 'requisite_of' */
194 UNIT_WANTED_BY, /* inverse of 'wants' */
195 UNIT_BOUND_BY, /* inverse of 'binds_to' */
196 UNIT_CONSISTS_OF, /* inverse of 'part_of' */
197
198 /* Negative dependencies */
199 UNIT_CONFLICTS, /* inverse of 'conflicts' is 'conflicted_by' */
200 UNIT_CONFLICTED_BY,
201
202 /* Order */
203 UNIT_BEFORE, /* inverse of 'before' is 'after' and vice versa */
204 UNIT_AFTER,
205
206 /* On Failure */
207 UNIT_ON_FAILURE,
208
209 /* Triggers (i.e. a socket triggers a service) */
210 UNIT_TRIGGERS,
211 UNIT_TRIGGERED_BY,
212
213 /* Propagate reloads */
214 UNIT_PROPAGATES_RELOAD_TO,
215 UNIT_RELOAD_PROPAGATED_FROM,
216
217 /* Joins namespace of */
218 UNIT_JOINS_NAMESPACE_OF,
219
220 /* Reference information for GC logic */
221 UNIT_REFERENCES, /* Inverse of 'references' is 'referenced_by' */
222 UNIT_REFERENCED_BY,
223
224 _UNIT_DEPENDENCY_MAX,
225 _UNIT_DEPENDENCY_INVALID = -1
226 } UnitDependency;
227
228 typedef enum NotifyAccess {
229 NOTIFY_NONE,
230 NOTIFY_ALL,
231 NOTIFY_MAIN,
232 NOTIFY_EXEC,
233 _NOTIFY_ACCESS_MAX,
234 _NOTIFY_ACCESS_INVALID = -1
235 } NotifyAccess;
236
237 char *unit_dbus_path_from_name(const char *name);
238 int unit_name_from_dbus_path(const char *path, char **name);
239
240 const char* unit_dbus_interface_from_type(UnitType t);
241 const char *unit_dbus_interface_from_name(const char *name);
242
243 const char *unit_type_to_string(UnitType i) _const_;
244 UnitType unit_type_from_string(const char *s) _pure_;
245
246 const char *unit_load_state_to_string(UnitLoadState i) _const_;
247 UnitLoadState unit_load_state_from_string(const char *s) _pure_;
248
249 const char *unit_active_state_to_string(UnitActiveState i) _const_;
250 UnitActiveState unit_active_state_from_string(const char *s) _pure_;
251
252 const char* automount_state_to_string(AutomountState i) _const_;
253 AutomountState automount_state_from_string(const char *s) _pure_;
254
255 const char* device_state_to_string(DeviceState i) _const_;
256 DeviceState device_state_from_string(const char *s) _pure_;
257
258 const char* mount_state_to_string(MountState i) _const_;
259 MountState mount_state_from_string(const char *s) _pure_;
260
261 const char* path_state_to_string(PathState i) _const_;
262 PathState path_state_from_string(const char *s) _pure_;
263
264 const char* scope_state_to_string(ScopeState i) _const_;
265 ScopeState scope_state_from_string(const char *s) _pure_;
266
267 const char* service_state_to_string(ServiceState i) _const_;
268 ServiceState service_state_from_string(const char *s) _pure_;
269
270 const char* slice_state_to_string(SliceState i) _const_;
271 SliceState slice_state_from_string(const char *s) _pure_;
272
273 const char* socket_state_to_string(SocketState i) _const_;
274 SocketState socket_state_from_string(const char *s) _pure_;
275
276 const char* swap_state_to_string(SwapState i) _const_;
277 SwapState swap_state_from_string(const char *s) _pure_;
278
279 const char* target_state_to_string(TargetState i) _const_;
280 TargetState target_state_from_string(const char *s) _pure_;
281
282 const char *timer_state_to_string(TimerState i) _const_;
283 TimerState timer_state_from_string(const char *s) _pure_;
284
285 const char *unit_dependency_to_string(UnitDependency i) _const_;
286 UnitDependency unit_dependency_from_string(const char *s) _pure_;
287
288 const char* notify_access_to_string(NotifyAccess i) _const_;
289 NotifyAccess notify_access_from_string(const char *s) _pure_;