1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-01-11 05:17:44 +03:00

Move all unit states to basic/ and extend systemctl --state=help

This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2015-09-28 14:30:36 -04:00
parent e16972e626
commit 7e55de3b96
29 changed files with 421 additions and 365 deletions

View File

@ -850,6 +850,159 @@ static const char* const unit_active_state_table[_UNIT_ACTIVE_STATE_MAX] = {
DEFINE_STRING_TABLE_LOOKUP(unit_active_state, UnitActiveState); DEFINE_STRING_TABLE_LOOKUP(unit_active_state, UnitActiveState);
static const char* const automount_state_table[_AUTOMOUNT_STATE_MAX] = {
[AUTOMOUNT_DEAD] = "dead",
[AUTOMOUNT_WAITING] = "waiting",
[AUTOMOUNT_RUNNING] = "running",
[AUTOMOUNT_FAILED] = "failed"
};
DEFINE_STRING_TABLE_LOOKUP(automount_state, AutomountState);
static const char* const busname_state_table[_BUSNAME_STATE_MAX] = {
[BUSNAME_DEAD] = "dead",
[BUSNAME_MAKING] = "making",
[BUSNAME_REGISTERED] = "registered",
[BUSNAME_LISTENING] = "listening",
[BUSNAME_RUNNING] = "running",
[BUSNAME_SIGTERM] = "sigterm",
[BUSNAME_SIGKILL] = "sigkill",
[BUSNAME_FAILED] = "failed",
};
DEFINE_STRING_TABLE_LOOKUP(busname_state, BusNameState);
static const char* const device_state_table[_DEVICE_STATE_MAX] = {
[DEVICE_DEAD] = "dead",
[DEVICE_TENTATIVE] = "tentative",
[DEVICE_PLUGGED] = "plugged",
};
DEFINE_STRING_TABLE_LOOKUP(device_state, DeviceState);
static const char* const mount_state_table[_MOUNT_STATE_MAX] = {
[MOUNT_DEAD] = "dead",
[MOUNT_MOUNTING] = "mounting",
[MOUNT_MOUNTING_DONE] = "mounting-done",
[MOUNT_MOUNTED] = "mounted",
[MOUNT_REMOUNTING] = "remounting",
[MOUNT_UNMOUNTING] = "unmounting",
[MOUNT_MOUNTING_SIGTERM] = "mounting-sigterm",
[MOUNT_MOUNTING_SIGKILL] = "mounting-sigkill",
[MOUNT_REMOUNTING_SIGTERM] = "remounting-sigterm",
[MOUNT_REMOUNTING_SIGKILL] = "remounting-sigkill",
[MOUNT_UNMOUNTING_SIGTERM] = "unmounting-sigterm",
[MOUNT_UNMOUNTING_SIGKILL] = "unmounting-sigkill",
[MOUNT_FAILED] = "failed"
};
DEFINE_STRING_TABLE_LOOKUP(mount_state, MountState);
static const char* const path_state_table[_PATH_STATE_MAX] = {
[PATH_DEAD] = "dead",
[PATH_WAITING] = "waiting",
[PATH_RUNNING] = "running",
[PATH_FAILED] = "failed"
};
DEFINE_STRING_TABLE_LOOKUP(path_state, PathState);
static const char* const scope_state_table[_SCOPE_STATE_MAX] = {
[SCOPE_DEAD] = "dead",
[SCOPE_RUNNING] = "running",
[SCOPE_ABANDONED] = "abandoned",
[SCOPE_STOP_SIGTERM] = "stop-sigterm",
[SCOPE_STOP_SIGKILL] = "stop-sigkill",
[SCOPE_FAILED] = "failed",
};
DEFINE_STRING_TABLE_LOOKUP(scope_state, ScopeState);
static const char* const service_state_table[_SERVICE_STATE_MAX] = {
[SERVICE_DEAD] = "dead",
[SERVICE_START_PRE] = "start-pre",
[SERVICE_START] = "start",
[SERVICE_START_POST] = "start-post",
[SERVICE_RUNNING] = "running",
[SERVICE_EXITED] = "exited",
[SERVICE_RELOAD] = "reload",
[SERVICE_STOP] = "stop",
[SERVICE_STOP_SIGABRT] = "stop-sigabrt",
[SERVICE_STOP_SIGTERM] = "stop-sigterm",
[SERVICE_STOP_SIGKILL] = "stop-sigkill",
[SERVICE_STOP_POST] = "stop-post",
[SERVICE_FINAL_SIGTERM] = "final-sigterm",
[SERVICE_FINAL_SIGKILL] = "final-sigkill",
[SERVICE_FAILED] = "failed",
[SERVICE_AUTO_RESTART] = "auto-restart",
};
DEFINE_STRING_TABLE_LOOKUP(service_state, ServiceState);
static const char* const slice_state_table[_SLICE_STATE_MAX] = {
[SLICE_DEAD] = "dead",
[SLICE_ACTIVE] = "active"
};
DEFINE_STRING_TABLE_LOOKUP(slice_state, SliceState);
static const char* const snapshot_state_table[_SNAPSHOT_STATE_MAX] = {
[SNAPSHOT_DEAD] = "dead",
[SNAPSHOT_ACTIVE] = "active"
};
DEFINE_STRING_TABLE_LOOKUP(snapshot_state, SnapshotState);
static const char* const socket_state_table[_SOCKET_STATE_MAX] = {
[SOCKET_DEAD] = "dead",
[SOCKET_START_PRE] = "start-pre",
[SOCKET_START_CHOWN] = "start-chown",
[SOCKET_START_POST] = "start-post",
[SOCKET_LISTENING] = "listening",
[SOCKET_RUNNING] = "running",
[SOCKET_STOP_PRE] = "stop-pre",
[SOCKET_STOP_PRE_SIGTERM] = "stop-pre-sigterm",
[SOCKET_STOP_PRE_SIGKILL] = "stop-pre-sigkill",
[SOCKET_STOP_POST] = "stop-post",
[SOCKET_FINAL_SIGTERM] = "final-sigterm",
[SOCKET_FINAL_SIGKILL] = "final-sigkill",
[SOCKET_FAILED] = "failed"
};
DEFINE_STRING_TABLE_LOOKUP(socket_state, SocketState);
static const char* const swap_state_table[_SWAP_STATE_MAX] = {
[SWAP_DEAD] = "dead",
[SWAP_ACTIVATING] = "activating",
[SWAP_ACTIVATING_DONE] = "activating-done",
[SWAP_ACTIVE] = "active",
[SWAP_DEACTIVATING] = "deactivating",
[SWAP_ACTIVATING_SIGTERM] = "activating-sigterm",
[SWAP_ACTIVATING_SIGKILL] = "activating-sigkill",
[SWAP_DEACTIVATING_SIGTERM] = "deactivating-sigterm",
[SWAP_DEACTIVATING_SIGKILL] = "deactivating-sigkill",
[SWAP_FAILED] = "failed"
};
DEFINE_STRING_TABLE_LOOKUP(swap_state, SwapState);
static const char* const target_state_table[_TARGET_STATE_MAX] = {
[TARGET_DEAD] = "dead",
[TARGET_ACTIVE] = "active"
};
DEFINE_STRING_TABLE_LOOKUP(target_state, TargetState);
static const char* const timer_state_table[_TIMER_STATE_MAX] = {
[TIMER_DEAD] = "dead",
[TIMER_WAITING] = "waiting",
[TIMER_RUNNING] = "running",
[TIMER_ELAPSED] = "elapsed",
[TIMER_FAILED] = "failed"
};
DEFINE_STRING_TABLE_LOOKUP(timer_state, TimerState);
static const char* const unit_dependency_table[_UNIT_DEPENDENCY_MAX] = { static const char* const unit_dependency_table[_UNIT_DEPENDENCY_MAX] = {
[UNIT_REQUIRES] = "Requires", [UNIT_REQUIRES] = "Requires",
[UNIT_REQUIRES_OVERRIDABLE] = "RequiresOverridable", [UNIT_REQUIRES_OVERRIDABLE] = "RequiresOverridable",

View File

@ -27,12 +27,7 @@
#define UNIT_NAME_MAX 256 #define UNIT_NAME_MAX 256
typedef enum UnitType UnitType; typedef enum UnitType {
typedef enum UnitLoadState UnitLoadState;
typedef enum UnitActiveState UnitActiveState;
typedef enum UnitDependency UnitDependency;
enum UnitType {
UNIT_SERVICE = 0, UNIT_SERVICE = 0,
UNIT_SOCKET, UNIT_SOCKET,
UNIT_BUSNAME, UNIT_BUSNAME,
@ -48,9 +43,9 @@ enum UnitType {
UNIT_SCOPE, UNIT_SCOPE,
_UNIT_TYPE_MAX, _UNIT_TYPE_MAX,
_UNIT_TYPE_INVALID = -1 _UNIT_TYPE_INVALID = -1
}; } UnitType;
enum UnitLoadState { typedef enum UnitLoadState {
UNIT_STUB = 0, UNIT_STUB = 0,
UNIT_LOADED, UNIT_LOADED,
UNIT_NOT_FOUND, UNIT_NOT_FOUND,
@ -59,9 +54,9 @@ enum UnitLoadState {
UNIT_MASKED, UNIT_MASKED,
_UNIT_LOAD_STATE_MAX, _UNIT_LOAD_STATE_MAX,
_UNIT_LOAD_STATE_INVALID = -1 _UNIT_LOAD_STATE_INVALID = -1
}; } UnitLoadState;
enum UnitActiveState { typedef enum UnitActiveState {
UNIT_ACTIVE, UNIT_ACTIVE,
UNIT_RELOADING, UNIT_RELOADING,
UNIT_INACTIVE, UNIT_INACTIVE,
@ -70,9 +65,165 @@ enum UnitActiveState {
UNIT_DEACTIVATING, UNIT_DEACTIVATING,
_UNIT_ACTIVE_STATE_MAX, _UNIT_ACTIVE_STATE_MAX,
_UNIT_ACTIVE_STATE_INVALID = -1 _UNIT_ACTIVE_STATE_INVALID = -1
}; } UnitActiveState;
enum UnitDependency { typedef enum AutomountState {
AUTOMOUNT_DEAD,
AUTOMOUNT_WAITING,
AUTOMOUNT_RUNNING,
AUTOMOUNT_FAILED,
_AUTOMOUNT_STATE_MAX,
_AUTOMOUNT_STATE_INVALID = -1
} AutomountState;
typedef enum BusNameState {
BUSNAME_DEAD,
BUSNAME_MAKING,
BUSNAME_REGISTERED,
BUSNAME_LISTENING,
BUSNAME_RUNNING,
BUSNAME_SIGTERM,
BUSNAME_SIGKILL,
BUSNAME_FAILED,
_BUSNAME_STATE_MAX,
_BUSNAME_STATE_INVALID = -1
} BusNameState;
/* We simply watch devices, we cannot plug/unplug them. That
* simplifies the state engine greatly */
typedef enum DeviceState {
DEVICE_DEAD,
DEVICE_TENTATIVE, /* mounted or swapped, but not (yet) announced by udev */
DEVICE_PLUGGED, /* announced by udev */
_DEVICE_STATE_MAX,
_DEVICE_STATE_INVALID = -1
} DeviceState;
typedef enum MountState {
MOUNT_DEAD,
MOUNT_MOUNTING, /* /usr/bin/mount is running, but the mount is not done yet. */
MOUNT_MOUNTING_DONE, /* /usr/bin/mount is running, and the mount is done. */
MOUNT_MOUNTED,
MOUNT_REMOUNTING,
MOUNT_UNMOUNTING,
MOUNT_MOUNTING_SIGTERM,
MOUNT_MOUNTING_SIGKILL,
MOUNT_REMOUNTING_SIGTERM,
MOUNT_REMOUNTING_SIGKILL,
MOUNT_UNMOUNTING_SIGTERM,
MOUNT_UNMOUNTING_SIGKILL,
MOUNT_FAILED,
_MOUNT_STATE_MAX,
_MOUNT_STATE_INVALID = -1
} MountState;
typedef enum PathState {
PATH_DEAD,
PATH_WAITING,
PATH_RUNNING,
PATH_FAILED,
_PATH_STATE_MAX,
_PATH_STATE_INVALID = -1
} PathState;
typedef enum ScopeState {
SCOPE_DEAD,
SCOPE_RUNNING,
SCOPE_ABANDONED,
SCOPE_STOP_SIGTERM,
SCOPE_STOP_SIGKILL,
SCOPE_FAILED,
_SCOPE_STATE_MAX,
_SCOPE_STATE_INVALID = -1
} ScopeState;
typedef enum ServiceState {
SERVICE_DEAD,
SERVICE_START_PRE,
SERVICE_START,
SERVICE_START_POST,
SERVICE_RUNNING,
SERVICE_EXITED, /* Nothing is running anymore, but RemainAfterExit is true hence this is OK */
SERVICE_RELOAD,
SERVICE_STOP, /* No STOP_PRE state, instead just register multiple STOP executables */
SERVICE_STOP_SIGABRT, /* Watchdog timeout */
SERVICE_STOP_SIGTERM,
SERVICE_STOP_SIGKILL,
SERVICE_STOP_POST,
SERVICE_FINAL_SIGTERM, /* In case the STOP_POST executable hangs, we shoot that down, too */
SERVICE_FINAL_SIGKILL,
SERVICE_FAILED,
SERVICE_AUTO_RESTART,
_SERVICE_STATE_MAX,
_SERVICE_STATE_INVALID = -1
} ServiceState;
typedef enum SliceState {
SLICE_DEAD,
SLICE_ACTIVE,
_SLICE_STATE_MAX,
_SLICE_STATE_INVALID = -1
} SliceState;
typedef enum SnapshotState {
SNAPSHOT_DEAD,
SNAPSHOT_ACTIVE,
_SNAPSHOT_STATE_MAX,
_SNAPSHOT_STATE_INVALID = -1
} SnapshotState;
typedef enum SocketState {
SOCKET_DEAD,
SOCKET_START_PRE,
SOCKET_START_CHOWN,
SOCKET_START_POST,
SOCKET_LISTENING,
SOCKET_RUNNING,
SOCKET_STOP_PRE,
SOCKET_STOP_PRE_SIGTERM,
SOCKET_STOP_PRE_SIGKILL,
SOCKET_STOP_POST,
SOCKET_FINAL_SIGTERM,
SOCKET_FINAL_SIGKILL,
SOCKET_FAILED,
_SOCKET_STATE_MAX,
_SOCKET_STATE_INVALID = -1
} SocketState;
typedef enum SwapState {
SWAP_DEAD,
SWAP_ACTIVATING, /* /sbin/swapon is running, but the swap not yet enabled. */
SWAP_ACTIVATING_DONE, /* /sbin/swapon is running, and the swap is done. */
SWAP_ACTIVE,
SWAP_DEACTIVATING,
SWAP_ACTIVATING_SIGTERM,
SWAP_ACTIVATING_SIGKILL,
SWAP_DEACTIVATING_SIGTERM,
SWAP_DEACTIVATING_SIGKILL,
SWAP_FAILED,
_SWAP_STATE_MAX,
_SWAP_STATE_INVALID = -1
} SwapState;
typedef enum TargetState {
TARGET_DEAD,
TARGET_ACTIVE,
_TARGET_STATE_MAX,
_TARGET_STATE_INVALID = -1
} TargetState;
typedef enum TimerState {
TIMER_DEAD,
TIMER_WAITING,
TIMER_RUNNING,
TIMER_ELAPSED,
TIMER_FAILED,
_TIMER_STATE_MAX,
_TIMER_STATE_INVALID = -1
} TimerState;
typedef enum UnitDependency {
/* Positive dependencies */ /* Positive dependencies */
UNIT_REQUIRES, UNIT_REQUIRES,
UNIT_REQUIRES_OVERRIDABLE, UNIT_REQUIRES_OVERRIDABLE,
@ -119,7 +270,7 @@ enum UnitDependency {
_UNIT_DEPENDENCY_MAX, _UNIT_DEPENDENCY_MAX,
_UNIT_DEPENDENCY_INVALID = -1 _UNIT_DEPENDENCY_INVALID = -1
}; } UnitDependency;
typedef enum UnitNameFlags { typedef enum UnitNameFlags {
UNIT_NAME_PLAIN = 1, /* Allow foo.service */ UNIT_NAME_PLAIN = 1, /* Allow foo.service */
@ -191,5 +342,44 @@ UnitLoadState unit_load_state_from_string(const char *s) _pure_;
const char *unit_active_state_to_string(UnitActiveState i) _const_; const char *unit_active_state_to_string(UnitActiveState i) _const_;
UnitActiveState unit_active_state_from_string(const char *s) _pure_; UnitActiveState unit_active_state_from_string(const char *s) _pure_;
const char* automount_state_to_string(AutomountState i) _const_;
AutomountState automount_state_from_string(const char *s) _pure_;
const char* busname_state_to_string(BusNameState i) _const_;
BusNameState busname_state_from_string(const char *s) _pure_;
const char* device_state_to_string(DeviceState i) _const_;
DeviceState device_state_from_string(const char *s) _pure_;
const char* mount_state_to_string(MountState i) _const_;
MountState mount_state_from_string(const char *s) _pure_;
const char* path_state_to_string(PathState i) _const_;
PathState path_state_from_string(const char *s) _pure_;
const char* scope_state_to_string(ScopeState i) _const_;
ScopeState scope_state_from_string(const char *s) _pure_;
const char* service_state_to_string(ServiceState i) _const_;
ServiceState service_state_from_string(const char *s) _pure_;
const char* slice_state_to_string(SliceState i) _const_;
SliceState slice_state_from_string(const char *s) _pure_;
const char* snapshot_state_to_string(SnapshotState i) _const_;
SnapshotState snapshot_state_from_string(const char *s) _pure_;
const char* socket_state_to_string(SocketState i) _const_;
SocketState socket_state_from_string(const char *s) _pure_;
const char* swap_state_to_string(SwapState i) _const_;
SwapState swap_state_from_string(const char *s) _pure_;
const char* target_state_to_string(TargetState i) _const_;
TargetState target_state_from_string(const char *s) _pure_;
const char *timer_state_to_string(TimerState i) _const_;
TimerState timer_state_from_string(const char *s) _pure_;
const char *unit_dependency_to_string(UnitDependency i) _const_; const char *unit_dependency_to_string(UnitDependency i) _const_;
UnitDependency unit_dependency_from_string(const char *s) _pure_; UnitDependency unit_dependency_from_string(const char *s) _pure_;

View File

@ -1024,15 +1024,6 @@ static bool automount_supported(void) {
return supported; return supported;
} }
static const char* const automount_state_table[_AUTOMOUNT_STATE_MAX] = {
[AUTOMOUNT_DEAD] = "dead",
[AUTOMOUNT_WAITING] = "waiting",
[AUTOMOUNT_RUNNING] = "running",
[AUTOMOUNT_FAILED] = "failed"
};
DEFINE_STRING_TABLE_LOOKUP(automount_state, AutomountState);
static const char* const automount_result_table[_AUTOMOUNT_RESULT_MAX] = { static const char* const automount_result_table[_AUTOMOUNT_RESULT_MAX] = {
[AUTOMOUNT_SUCCESS] = "success", [AUTOMOUNT_SUCCESS] = "success",
[AUTOMOUNT_FAILURE_RESOURCES] = "resources" [AUTOMOUNT_FAILURE_RESOURCES] = "resources"

View File

@ -25,15 +25,6 @@ typedef struct Automount Automount;
#include "unit.h" #include "unit.h"
typedef enum AutomountState {
AUTOMOUNT_DEAD,
AUTOMOUNT_WAITING,
AUTOMOUNT_RUNNING,
AUTOMOUNT_FAILED,
_AUTOMOUNT_STATE_MAX,
_AUTOMOUNT_STATE_INVALID = -1
} AutomountState;
typedef enum AutomountResult { typedef enum AutomountResult {
AUTOMOUNT_SUCCESS, AUTOMOUNT_SUCCESS,
AUTOMOUNT_FAILURE_RESOURCES, AUTOMOUNT_FAILURE_RESOURCES,
@ -66,8 +57,5 @@ extern const UnitVTable automount_vtable;
int automount_update_mount(Automount *a, MountState old_state, MountState state); int automount_update_mount(Automount *a, MountState old_state, MountState state);
const char* automount_state_to_string(AutomountState i) _const_;
AutomountState automount_state_from_string(const char *s) _pure_;
const char* automount_result_to_string(AutomountResult i) _const_; const char* automount_result_to_string(AutomountResult i) _const_;
AutomountResult automount_result_from_string(const char *s) _pure_; AutomountResult automount_result_from_string(const char *s) _pure_;

View File

@ -991,19 +991,6 @@ static bool busname_supported(void) {
return supported; return supported;
} }
static const char* const busname_state_table[_BUSNAME_STATE_MAX] = {
[BUSNAME_DEAD] = "dead",
[BUSNAME_MAKING] = "making",
[BUSNAME_REGISTERED] = "registered",
[BUSNAME_LISTENING] = "listening",
[BUSNAME_RUNNING] = "running",
[BUSNAME_SIGTERM] = "sigterm",
[BUSNAME_SIGKILL] = "sigkill",
[BUSNAME_FAILED] = "failed",
};
DEFINE_STRING_TABLE_LOOKUP(busname_state, BusNameState);
static const char* const busname_result_table[_BUSNAME_RESULT_MAX] = { static const char* const busname_result_table[_BUSNAME_RESULT_MAX] = {
[BUSNAME_SUCCESS] = "success", [BUSNAME_SUCCESS] = "success",
[BUSNAME_FAILURE_RESOURCES] = "resources", [BUSNAME_FAILURE_RESOURCES] = "resources",

View File

@ -24,20 +24,6 @@
typedef struct BusName BusName; typedef struct BusName BusName;
typedef struct BusNamePolicy BusNamePolicy; typedef struct BusNamePolicy BusNamePolicy;
typedef enum BusNameState {
BUSNAME_DEAD,
BUSNAME_MAKING,
BUSNAME_REGISTERED,
BUSNAME_LISTENING,
BUSNAME_RUNNING,
BUSNAME_SIGTERM,
BUSNAME_SIGKILL,
BUSNAME_FAILED,
_BUSNAME_STATE_MAX,
_BUSNAME_STATE_INVALID = -1
} BusNameState;
typedef enum BusNameResult { typedef enum BusNameResult {
BUSNAME_SUCCESS, BUSNAME_SUCCESS,
BUSNAME_FAILURE_RESOURCES, BUSNAME_FAILURE_RESOURCES,
@ -77,8 +63,5 @@ struct BusName {
extern const UnitVTable busname_vtable; extern const UnitVTable busname_vtable;
const char* busname_state_to_string(BusNameState i) _const_;
BusNameState busname_state_from_string(const char *s) _pure_;
const char* busname_result_to_string(BusNameResult i) _const_; const char* busname_result_to_string(BusNameResult i) _const_;
BusNameResult busname_result_from_string(const char *s) _pure_; BusNameResult busname_result_from_string(const char *s) _pure_;

View File

@ -816,14 +816,6 @@ int device_found_node(Manager *m, const char *node, bool add, DeviceFound found,
return device_update_found_by_name(m, node, add, found, now); return device_update_found_by_name(m, node, add, found, now);
} }
static const char* const device_state_table[_DEVICE_STATE_MAX] = {
[DEVICE_DEAD] = "dead",
[DEVICE_TENTATIVE] = "tentative",
[DEVICE_PLUGGED] = "plugged",
};
DEFINE_STRING_TABLE_LOOKUP(device_state, DeviceState);
const UnitVTable device_vtable = { const UnitVTable device_vtable = {
.object_size = sizeof(Device), .object_size = sizeof(Device),
.sections = .sections =

View File

@ -23,16 +23,6 @@
typedef struct Device Device; typedef struct Device Device;
/* We simply watch devices, we cannot plug/unplug them. That
* simplifies the state engine greatly */
typedef enum DeviceState {
DEVICE_DEAD,
DEVICE_TENTATIVE, /* mounted or swapped, but not (yet) announced by udev */
DEVICE_PLUGGED, /* announced by udev */
_DEVICE_STATE_MAX,
_DEVICE_STATE_INVALID = -1
} DeviceState;
typedef enum DeviceFound { typedef enum DeviceFound {
DEVICE_NOT_FOUND = 0, DEVICE_NOT_FOUND = 0,
DEVICE_FOUND_UDEV = 1, DEVICE_FOUND_UDEV = 1,
@ -56,7 +46,4 @@ struct Device {
extern const UnitVTable device_vtable; extern const UnitVTable device_vtable;
const char* device_state_to_string(DeviceState i) _const_;
DeviceState device_state_from_string(const char *s) _pure_;
int device_found_node(Manager *m, const char *node, bool add, DeviceFound found, bool now); int device_found_node(Manager *m, const char *node, bool add, DeviceFound found, bool now);

View File

@ -1756,24 +1756,6 @@ static int mount_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) {
return unit_kill_common(u, who, signo, -1, MOUNT(u)->control_pid, error); return unit_kill_common(u, who, signo, -1, MOUNT(u)->control_pid, error);
} }
static const char* const mount_state_table[_MOUNT_STATE_MAX] = {
[MOUNT_DEAD] = "dead",
[MOUNT_MOUNTING] = "mounting",
[MOUNT_MOUNTING_DONE] = "mounting-done",
[MOUNT_MOUNTED] = "mounted",
[MOUNT_REMOUNTING] = "remounting",
[MOUNT_UNMOUNTING] = "unmounting",
[MOUNT_MOUNTING_SIGTERM] = "mounting-sigterm",
[MOUNT_MOUNTING_SIGKILL] = "mounting-sigkill",
[MOUNT_REMOUNTING_SIGTERM] = "remounting-sigterm",
[MOUNT_REMOUNTING_SIGKILL] = "remounting-sigkill",
[MOUNT_UNMOUNTING_SIGTERM] = "unmounting-sigterm",
[MOUNT_UNMOUNTING_SIGKILL] = "unmounting-sigkill",
[MOUNT_FAILED] = "failed"
};
DEFINE_STRING_TABLE_LOOKUP(mount_state, MountState);
static const char* const mount_exec_command_table[_MOUNT_EXEC_COMMAND_MAX] = { static const char* const mount_exec_command_table[_MOUNT_EXEC_COMMAND_MAX] = {
[MOUNT_EXEC_MOUNT] = "ExecMount", [MOUNT_EXEC_MOUNT] = "ExecMount",
[MOUNT_EXEC_UNMOUNT] = "ExecUnmount", [MOUNT_EXEC_UNMOUNT] = "ExecUnmount",

View File

@ -26,24 +26,6 @@ typedef struct Mount Mount;
#include "kill.h" #include "kill.h"
#include "execute.h" #include "execute.h"
typedef enum MountState {
MOUNT_DEAD,
MOUNT_MOUNTING, /* /usr/bin/mount is running, but the mount is not done yet. */
MOUNT_MOUNTING_DONE, /* /usr/bin/mount is running, and the mount is done. */
MOUNT_MOUNTED,
MOUNT_REMOUNTING,
MOUNT_UNMOUNTING,
MOUNT_MOUNTING_SIGTERM,
MOUNT_MOUNTING_SIGKILL,
MOUNT_REMOUNTING_SIGTERM,
MOUNT_REMOUNTING_SIGKILL,
MOUNT_UNMOUNTING_SIGTERM,
MOUNT_UNMOUNTING_SIGKILL,
MOUNT_FAILED,
_MOUNT_STATE_MAX,
_MOUNT_STATE_INVALID = -1
} MountState;
typedef enum MountExecCommand { typedef enum MountExecCommand {
MOUNT_EXEC_MOUNT, MOUNT_EXEC_MOUNT,
MOUNT_EXEC_UNMOUNT, MOUNT_EXEC_UNMOUNT,
@ -120,9 +102,6 @@ extern const UnitVTable mount_vtable;
void mount_fd_event(Manager *m, int events); void mount_fd_event(Manager *m, int events);
const char* mount_state_to_string(MountState i) _const_;
MountState mount_state_from_string(const char *s) _pure_;
const char* mount_exec_command_to_string(MountExecCommand i) _const_; const char* mount_exec_command_to_string(MountExecCommand i) _const_;
MountExecCommand mount_exec_command_from_string(const char *s) _pure_; MountExecCommand mount_exec_command_from_string(const char *s) _pure_;

View File

@ -715,15 +715,6 @@ static void path_reset_failed(Unit *u) {
p->result = PATH_SUCCESS; p->result = PATH_SUCCESS;
} }
static const char* const path_state_table[_PATH_STATE_MAX] = {
[PATH_DEAD] = "dead",
[PATH_WAITING] = "waiting",
[PATH_RUNNING] = "running",
[PATH_FAILED] = "failed"
};
DEFINE_STRING_TABLE_LOOKUP(path_state, PathState);
static const char* const path_type_table[_PATH_TYPE_MAX] = { static const char* const path_type_table[_PATH_TYPE_MAX] = {
[PATH_EXISTS] = "PathExists", [PATH_EXISTS] = "PathExists",
[PATH_EXISTS_GLOB] = "PathExistsGlob", [PATH_EXISTS_GLOB] = "PathExistsGlob",

View File

@ -26,15 +26,6 @@ typedef struct PathSpec PathSpec;
#include "unit.h" #include "unit.h"
typedef enum PathState {
PATH_DEAD,
PATH_WAITING,
PATH_RUNNING,
PATH_FAILED,
_PATH_STATE_MAX,
_PATH_STATE_INVALID = -1
} PathState;
typedef enum PathType { typedef enum PathType {
PATH_EXISTS, PATH_EXISTS,
PATH_EXISTS_GLOB, PATH_EXISTS_GLOB,
@ -96,9 +87,6 @@ void path_free_specs(Path *p);
extern const UnitVTable path_vtable; extern const UnitVTable path_vtable;
const char* path_state_to_string(PathState i) _const_;
PathState path_state_from_string(const char *s) _pure_;
const char* path_type_to_string(PathType i) _const_; const char* path_type_to_string(PathType i) _const_;
PathType path_type_from_string(const char *s) _pure_; PathType path_type_from_string(const char *s) _pure_;

View File

@ -549,17 +549,6 @@ static int scope_enumerate(Manager *m) {
return 0; return 0;
} }
static const char* const scope_state_table[_SCOPE_STATE_MAX] = {
[SCOPE_DEAD] = "dead",
[SCOPE_RUNNING] = "running",
[SCOPE_ABANDONED] = "abandoned",
[SCOPE_STOP_SIGTERM] = "stop-sigterm",
[SCOPE_STOP_SIGKILL] = "stop-sigkill",
[SCOPE_FAILED] = "failed",
};
DEFINE_STRING_TABLE_LOOKUP(scope_state, ScopeState);
static const char* const scope_result_table[_SCOPE_RESULT_MAX] = { static const char* const scope_result_table[_SCOPE_RESULT_MAX] = {
[SCOPE_SUCCESS] = "success", [SCOPE_SUCCESS] = "success",
[SCOPE_FAILURE_RESOURCES] = "resources", [SCOPE_FAILURE_RESOURCES] = "resources",

View File

@ -25,17 +25,6 @@ typedef struct Scope Scope;
#include "kill.h" #include "kill.h"
typedef enum ScopeState {
SCOPE_DEAD,
SCOPE_RUNNING,
SCOPE_ABANDONED,
SCOPE_STOP_SIGTERM,
SCOPE_STOP_SIGKILL,
SCOPE_FAILED,
_SCOPE_STATE_MAX,
_SCOPE_STATE_INVALID = -1
} ScopeState;
typedef enum ScopeResult { typedef enum ScopeResult {
SCOPE_SUCCESS, SCOPE_SUCCESS,
SCOPE_FAILURE_RESOURCES, SCOPE_FAILURE_RESOURCES,
@ -64,8 +53,5 @@ extern const UnitVTable scope_vtable;
int scope_abandon(Scope *s); int scope_abandon(Scope *s);
const char* scope_state_to_string(ScopeState i) _const_;
ScopeState scope_state_from_string(const char *s) _pure_;
const char* scope_result_to_string(ScopeResult i) _const_; const char* scope_result_to_string(ScopeResult i) _const_;
ScopeResult scope_result_from_string(const char *s) _pure_; ScopeResult scope_result_from_string(const char *s) _pure_;

View File

@ -3092,27 +3092,6 @@ static int service_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) {
return unit_kill_common(u, who, signo, s->main_pid, s->control_pid, error); return unit_kill_common(u, who, signo, s->main_pid, s->control_pid, error);
} }
static const char* const service_state_table[_SERVICE_STATE_MAX] = {
[SERVICE_DEAD] = "dead",
[SERVICE_START_PRE] = "start-pre",
[SERVICE_START] = "start",
[SERVICE_START_POST] = "start-post",
[SERVICE_RUNNING] = "running",
[SERVICE_EXITED] = "exited",
[SERVICE_RELOAD] = "reload",
[SERVICE_STOP] = "stop",
[SERVICE_STOP_SIGABRT] = "stop-sigabrt",
[SERVICE_STOP_SIGTERM] = "stop-sigterm",
[SERVICE_STOP_SIGKILL] = "stop-sigkill",
[SERVICE_STOP_POST] = "stop-post",
[SERVICE_FINAL_SIGTERM] = "final-sigterm",
[SERVICE_FINAL_SIGKILL] = "final-sigkill",
[SERVICE_FAILED] = "failed",
[SERVICE_AUTO_RESTART] = "auto-restart",
};
DEFINE_STRING_TABLE_LOOKUP(service_state, ServiceState);
static const char* const service_restart_table[_SERVICE_RESTART_MAX] = { static const char* const service_restart_table[_SERVICE_RESTART_MAX] = {
[SERVICE_RESTART_NO] = "no", [SERVICE_RESTART_NO] = "no",
[SERVICE_RESTART_ON_SUCCESS] = "on-success", [SERVICE_RESTART_ON_SUCCESS] = "on-success",

View File

@ -29,27 +29,6 @@ typedef struct ServiceFDStore ServiceFDStore;
#include "kill.h" #include "kill.h"
#include "exit-status.h" #include "exit-status.h"
typedef enum ServiceState {
SERVICE_DEAD,
SERVICE_START_PRE,
SERVICE_START,
SERVICE_START_POST,
SERVICE_RUNNING,
SERVICE_EXITED, /* Nothing is running anymore, but RemainAfterExit is true hence this is OK */
SERVICE_RELOAD,
SERVICE_STOP, /* No STOP_PRE state, instead just register multiple STOP executables */
SERVICE_STOP_SIGABRT, /* Watchdog timeout */
SERVICE_STOP_SIGTERM,
SERVICE_STOP_SIGKILL,
SERVICE_STOP_POST,
SERVICE_FINAL_SIGTERM, /* In case the STOP_POST executable hangs, we shoot that down, too */
SERVICE_FINAL_SIGKILL,
SERVICE_FAILED,
SERVICE_AUTO_RESTART,
_SERVICE_STATE_MAX,
_SERVICE_STATE_INVALID = -1
} ServiceState;
typedef enum ServiceRestart { typedef enum ServiceRestart {
SERVICE_RESTART_NO, SERVICE_RESTART_NO,
SERVICE_RESTART_ON_SUCCESS, SERVICE_RESTART_ON_SUCCESS,
@ -221,9 +200,6 @@ extern const UnitVTable service_vtable;
int service_set_socket_fd(Service *s, int fd, struct Socket *socket, bool selinux_context_net); int service_set_socket_fd(Service *s, int fd, struct Socket *socket, bool selinux_context_net);
const char* service_state_to_string(ServiceState i) _const_;
ServiceState service_state_from_string(const char *s) _pure_;
const char* service_restart_to_string(ServiceRestart i) _const_; const char* service_restart_to_string(ServiceRestart i) _const_;
ServiceRestart service_restart_from_string(const char *s) _pure_; ServiceRestart service_restart_from_string(const char *s) _pure_;

View File

@ -287,13 +287,6 @@ static int slice_enumerate(Manager *m) {
return 0; return 0;
} }
static const char* const slice_state_table[_SLICE_STATE_MAX] = {
[SLICE_DEAD] = "dead",
[SLICE_ACTIVE] = "active"
};
DEFINE_STRING_TABLE_LOOKUP(slice_state, SliceState);
const UnitVTable slice_vtable = { const UnitVTable slice_vtable = {
.object_size = sizeof(Slice), .object_size = sizeof(Slice),
.cgroup_context_offset = offsetof(Slice, cgroup_context), .cgroup_context_offset = offsetof(Slice, cgroup_context),

View File

@ -23,14 +23,6 @@
typedef struct Slice Slice; typedef struct Slice Slice;
typedef enum SliceState {
SLICE_DEAD,
SLICE_ACTIVE,
_SLICE_STATE_MAX,
_SLICE_STATE_INVALID = -1
} SliceState;
struct Slice { struct Slice {
Unit meta; Unit meta;
@ -40,6 +32,3 @@ struct Slice {
}; };
extern const UnitVTable slice_vtable; extern const UnitVTable slice_vtable;
const char* slice_state_to_string(SliceState i) _const_;
SliceState slice_state_from_string(const char *s) _pure_;

View File

@ -272,13 +272,6 @@ void snapshot_remove(Snapshot *s) {
unit_add_to_cleanup_queue(UNIT(s)); unit_add_to_cleanup_queue(UNIT(s));
} }
static const char* const snapshot_state_table[_SNAPSHOT_STATE_MAX] = {
[SNAPSHOT_DEAD] = "dead",
[SNAPSHOT_ACTIVE] = "active"
};
DEFINE_STRING_TABLE_LOOKUP(snapshot_state, SnapshotState);
const UnitVTable snapshot_vtable = { const UnitVTable snapshot_vtable = {
.object_size = sizeof(Snapshot), .object_size = sizeof(Snapshot),

View File

@ -23,14 +23,6 @@
typedef struct Snapshot Snapshot; typedef struct Snapshot Snapshot;
typedef enum SnapshotState {
SNAPSHOT_DEAD,
SNAPSHOT_ACTIVE,
_SNAPSHOT_STATE_MAX,
_SNAPSHOT_STATE_INVALID = -1
} SnapshotState;
struct Snapshot { struct Snapshot {
Unit meta; Unit meta;
@ -43,6 +35,3 @@ extern const UnitVTable snapshot_vtable;
int snapshot_create(Manager *m, const char *name, bool cleanup, sd_bus_error *e, Snapshot **s); int snapshot_create(Manager *m, const char *name, bool cleanup, sd_bus_error *e, Snapshot **s);
void snapshot_remove(Snapshot *s); void snapshot_remove(Snapshot *s);
const char* snapshot_state_to_string(SnapshotState i) _const_;
SnapshotState snapshot_state_from_string(const char *s) _pure_;

View File

@ -2782,24 +2782,6 @@ static int socket_get_timeout(Unit *u, uint64_t *timeout) {
return 1; return 1;
} }
static const char* const socket_state_table[_SOCKET_STATE_MAX] = {
[SOCKET_DEAD] = "dead",
[SOCKET_START_PRE] = "start-pre",
[SOCKET_START_CHOWN] = "start-chown",
[SOCKET_START_POST] = "start-post",
[SOCKET_LISTENING] = "listening",
[SOCKET_RUNNING] = "running",
[SOCKET_STOP_PRE] = "stop-pre",
[SOCKET_STOP_PRE_SIGTERM] = "stop-pre-sigterm",
[SOCKET_STOP_PRE_SIGKILL] = "stop-pre-sigkill",
[SOCKET_STOP_POST] = "stop-post",
[SOCKET_FINAL_SIGTERM] = "final-sigterm",
[SOCKET_FINAL_SIGKILL] = "final-sigkill",
[SOCKET_FAILED] = "failed"
};
DEFINE_STRING_TABLE_LOOKUP(socket_state, SocketState);
static const char* const socket_exec_command_table[_SOCKET_EXEC_COMMAND_MAX] = { static const char* const socket_exec_command_table[_SOCKET_EXEC_COMMAND_MAX] = {
[SOCKET_EXEC_START_PRE] = "StartPre", [SOCKET_EXEC_START_PRE] = "StartPre",
[SOCKET_EXEC_START_CHOWN] = "StartChown", [SOCKET_EXEC_START_CHOWN] = "StartChown",

View File

@ -27,24 +27,6 @@ typedef struct Socket Socket;
#include "mount.h" #include "mount.h"
#include "service.h" #include "service.h"
typedef enum SocketState {
SOCKET_DEAD,
SOCKET_START_PRE,
SOCKET_START_CHOWN,
SOCKET_START_POST,
SOCKET_LISTENING,
SOCKET_RUNNING,
SOCKET_STOP_PRE,
SOCKET_STOP_PRE_SIGTERM,
SOCKET_STOP_PRE_SIGKILL,
SOCKET_STOP_POST,
SOCKET_FINAL_SIGTERM,
SOCKET_FINAL_SIGKILL,
SOCKET_FAILED,
_SOCKET_STATE_MAX,
_SOCKET_STATE_INVALID = -1
} SocketState;
typedef enum SocketExecCommand { typedef enum SocketExecCommand {
SOCKET_EXEC_START_PRE, SOCKET_EXEC_START_PRE,
SOCKET_EXEC_START_CHOWN, SOCKET_EXEC_START_CHOWN,
@ -183,9 +165,6 @@ void socket_free_ports(Socket *s);
extern const UnitVTable socket_vtable; extern const UnitVTable socket_vtable;
const char* socket_state_to_string(SocketState i) _const_;
SocketState socket_state_from_string(const char *s) _pure_;
const char* socket_exec_command_to_string(SocketExecCommand i) _const_; const char* socket_exec_command_to_string(SocketExecCommand i) _const_;
SocketExecCommand socket_exec_command_from_string(const char *s) _pure_; SocketExecCommand socket_exec_command_from_string(const char *s) _pure_;

View File

@ -1398,21 +1398,6 @@ static bool swap_supported(void) {
return supported; return supported;
} }
static const char* const swap_state_table[_SWAP_STATE_MAX] = {
[SWAP_DEAD] = "dead",
[SWAP_ACTIVATING] = "activating",
[SWAP_ACTIVATING_DONE] = "activating-done",
[SWAP_ACTIVE] = "active",
[SWAP_DEACTIVATING] = "deactivating",
[SWAP_ACTIVATING_SIGTERM] = "activating-sigterm",
[SWAP_ACTIVATING_SIGKILL] = "activating-sigkill",
[SWAP_DEACTIVATING_SIGTERM] = "deactivating-sigterm",
[SWAP_DEACTIVATING_SIGKILL] = "deactivating-sigkill",
[SWAP_FAILED] = "failed"
};
DEFINE_STRING_TABLE_LOOKUP(swap_state, SwapState);
static const char* const swap_exec_command_table[_SWAP_EXEC_COMMAND_MAX] = { static const char* const swap_exec_command_table[_SWAP_EXEC_COMMAND_MAX] = {
[SWAP_EXEC_ACTIVATE] = "ExecActivate", [SWAP_EXEC_ACTIVATE] = "ExecActivate",
[SWAP_EXEC_DEACTIVATE] = "ExecDeactivate", [SWAP_EXEC_DEACTIVATE] = "ExecDeactivate",

View File

@ -26,22 +26,6 @@
typedef struct Swap Swap; typedef struct Swap Swap;
typedef enum SwapState {
SWAP_DEAD,
SWAP_ACTIVATING, /* /sbin/swapon is running, but the swap not yet enabled. */
SWAP_ACTIVATING_DONE, /* /sbin/swapon is running, and the swap is done. */
SWAP_ACTIVE,
SWAP_DEACTIVATING,
SWAP_ACTIVATING_SIGTERM,
SWAP_ACTIVATING_SIGKILL,
SWAP_DEACTIVATING_SIGTERM,
SWAP_DEACTIVATING_SIGKILL,
SWAP_FAILED,
_SWAP_STATE_MAX,
_SWAP_STATE_INVALID = -1
} SwapState;
typedef enum SwapExecCommand { typedef enum SwapExecCommand {
SWAP_EXEC_ACTIVATE, SWAP_EXEC_ACTIVATE,
SWAP_EXEC_DEACTIVATE, SWAP_EXEC_DEACTIVATE,
@ -120,9 +104,6 @@ extern const UnitVTable swap_vtable;
int swap_process_device_new(Manager *m, struct udev_device *dev); int swap_process_device_new(Manager *m, struct udev_device *dev);
int swap_process_device_remove(Manager *m, struct udev_device *dev); int swap_process_device_remove(Manager *m, struct udev_device *dev);
const char* swap_state_to_string(SwapState i) _const_;
SwapState swap_state_from_string(const char *s) _pure_;
const char* swap_exec_command_to_string(SwapExecCommand i) _const_; const char* swap_exec_command_to_string(SwapExecCommand i) _const_;
SwapExecCommand swap_exec_command_from_string(const char *s) _pure_; SwapExecCommand swap_exec_command_from_string(const char *s) _pure_;

View File

@ -192,13 +192,6 @@ _pure_ static const char *target_sub_state_to_string(Unit *u) {
return target_state_to_string(TARGET(u)->state); return target_state_to_string(TARGET(u)->state);
} }
static const char* const target_state_table[_TARGET_STATE_MAX] = {
[TARGET_DEAD] = "dead",
[TARGET_ACTIVE] = "active"
};
DEFINE_STRING_TABLE_LOOKUP(target_state, TargetState);
const UnitVTable target_vtable = { const UnitVTable target_vtable = {
.object_size = sizeof(Target), .object_size = sizeof(Target),

View File

@ -23,14 +23,6 @@
typedef struct Target Target; typedef struct Target Target;
typedef enum TargetState {
TARGET_DEAD,
TARGET_ACTIVE,
_TARGET_STATE_MAX,
_TARGET_STATE_INVALID = -1
} TargetState;
struct Target { struct Target {
Unit meta; Unit meta;
@ -38,6 +30,3 @@ struct Target {
}; };
extern const UnitVTable target_vtable; extern const UnitVTable target_vtable;
const char* target_state_to_string(TargetState i) _const_;
TargetState target_state_from_string(const char *s) _pure_;

View File

@ -713,16 +713,6 @@ static void timer_time_change(Unit *u) {
timer_enter_waiting(t, false); timer_enter_waiting(t, false);
} }
static const char* const timer_state_table[_TIMER_STATE_MAX] = {
[TIMER_DEAD] = "dead",
[TIMER_WAITING] = "waiting",
[TIMER_RUNNING] = "running",
[TIMER_ELAPSED] = "elapsed",
[TIMER_FAILED] = "failed"
};
DEFINE_STRING_TABLE_LOOKUP(timer_state, TimerState);
static const char* const timer_base_table[_TIMER_BASE_MAX] = { static const char* const timer_base_table[_TIMER_BASE_MAX] = {
[TIMER_ACTIVE] = "OnActiveSec", [TIMER_ACTIVE] = "OnActiveSec",
[TIMER_BOOT] = "OnBootSec", [TIMER_BOOT] = "OnBootSec",

View File

@ -25,16 +25,6 @@ typedef struct Timer Timer;
#include "calendarspec.h" #include "calendarspec.h"
typedef enum TimerState {
TIMER_DEAD,
TIMER_WAITING,
TIMER_RUNNING,
TIMER_ELAPSED,
TIMER_FAILED,
_TIMER_STATE_MAX,
_TIMER_STATE_INVALID = -1
} TimerState;
typedef enum TimerBase { typedef enum TimerBase {
TIMER_ACTIVE, TIMER_ACTIVE,
TIMER_BOOT, TIMER_BOOT,
@ -91,9 +81,6 @@ void timer_free_values(Timer *t);
extern const UnitVTable timer_vtable; extern const UnitVTable timer_vtable;
const char *timer_state_to_string(TimerState i) _const_;
TimerState timer_state_from_string(const char *s) _pure_;
const char *timer_base_to_string(TimerBase i) _const_; const char *timer_base_to_string(TimerBase i) _const_;
TimerBase timer_base_from_string(const char *s) _pure_; TimerBase timer_base_from_string(const char *s) _pure_;

View File

@ -6333,6 +6333,71 @@ static void help_states(void) {
puts("\nAvailable unit active states:"); puts("\nAvailable unit active states:");
for (i = 0; i < _UNIT_ACTIVE_STATE_MAX; i++) for (i = 0; i < _UNIT_ACTIVE_STATE_MAX; i++)
puts(unit_active_state_to_string(i)); puts(unit_active_state_to_string(i));
if (!arg_no_legend)
puts("\nAvailable automount unit substates:");
for (i = 0; i < _AUTOMOUNT_STATE_MAX; i++)
puts(automount_state_to_string(i));
if (!arg_no_legend)
puts("\nAvailable busname unit substates:");
for (i = 0; i < _BUSNAME_STATE_MAX; i++)
puts(busname_state_to_string(i));
if (!arg_no_legend)
puts("\nAvailable device unit substates:");
for (i = 0; i < _DEVICE_STATE_MAX; i++)
puts(device_state_to_string(i));
if (!arg_no_legend)
puts("\nAvailable mount unit substates:");
for (i = 0; i < _MOUNT_STATE_MAX; i++)
puts(mount_state_to_string(i));
if (!arg_no_legend)
puts("\nAvailable path unit substates:");
for (i = 0; i < _PATH_STATE_MAX; i++)
puts(path_state_to_string(i));
if (!arg_no_legend)
puts("\nAvailable scope unit substates:");
for (i = 0; i < _SCOPE_STATE_MAX; i++)
puts(scope_state_to_string(i));
if (!arg_no_legend)
puts("\nAvailable service unit substates:");
for (i = 0; i < _SERVICE_STATE_MAX; i++)
puts(service_state_to_string(i));
if (!arg_no_legend)
puts("\nAvailable slice unit substates:");
for (i = 0; i < _SLICE_STATE_MAX; i++)
puts(slice_state_to_string(i));
if (!arg_no_legend)
puts("\nAvailable snapshot unit substates:");
for (i = 0; i < _SNAPSHOT_STATE_MAX; i++)
puts(snapshot_state_to_string(i));
if (!arg_no_legend)
puts("\nAvailable socket unit substates:");
for (i = 0; i < _SOCKET_STATE_MAX; i++)
puts(socket_state_to_string(i));
if (!arg_no_legend)
puts("\nAvailable swap unit substates:");
for (i = 0; i < _SWAP_STATE_MAX; i++)
puts(swap_state_to_string(i));
if (!arg_no_legend)
puts("\nAvailable target unit substates:");
for (i = 0; i < _TARGET_STATE_MAX; i++)
puts(target_state_to_string(i));
if (!arg_no_legend)
puts("\nAvailable timer unit substates:");
for (i = 0; i < _TIMER_STATE_MAX; i++)
puts(timer_state_to_string(i));
} }
static int systemctl_parse_argv(int argc, char *argv[]) { static int systemctl_parse_argv(int argc, char *argv[]) {