chiark / gitweb /
tree-wide: drop license boilerplate
[elogind.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_;