[systemd-devel] [PATCH v3 3/4] unit: add UnitMask enum and get unit scope(mask) api from property
WaLyong Cho
walyong.cho at samsung.com
Wed Nov 12 07:45:51 PST 2014
---
Makefile.am | 7 ++
src/shared/.gitignore | 1 +
src/shared/unit-name.c | 22 ++++
src/shared/unit-name.h | 26 +++++
src/shared/unit-property-scope.gperf | 202 +++++++++++++++++++++++++++++++++++
5 files changed, 258 insertions(+)
create mode 100644 src/shared/unit-property-scope.gperf
diff --git a/Makefile.am b/Makefile.am
index 0b32639..a221a69 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -819,6 +819,7 @@ libsystemd_shared_la_SOURCES = \
src/shared/cgroup-show.h \
src/shared/unit-name.c \
src/shared/unit-name.h \
+ src/shared/unit-property-scope.c \
src/shared/utmp-wtmp.h \
src/shared/watchdog.c \
src/shared/watchdog.h \
@@ -907,6 +908,12 @@ libsystemd_shared_la_CFLAGS = \
$(SECCOMP_CFLAGS) \
-pthread
+EXTRA_DIST += \
+ src/shared/unit-property-scope.gperf
+
+CLEANFILES += \
+ src/shared/unit-property-scope.c
+
libsystemd_shared_la_LIBADD = \
$(CAP_LIBS)
diff --git a/src/shared/.gitignore b/src/shared/.gitignore
index 61709e8..e7faa23 100644
--- a/src/shared/.gitignore
+++ b/src/shared/.gitignore
@@ -10,3 +10,4 @@
/arphrd-from-name.h
/arphrd-list.txt
/arphrd-to-name.h
+/unit-property-scope.c
diff --git a/src/shared/unit-name.c b/src/shared/unit-name.c
index 2ef8545..e4669dd 100644
--- a/src/shared/unit-name.c
+++ b/src/shared/unit-name.c
@@ -621,3 +621,25 @@ static const char* const unit_dependency_table[_UNIT_DEPENDENCY_MAX] = {
};
DEFINE_STRING_TABLE_LOOKUP(unit_dependency, UnitDependency);
+
+static UnitMask unit_get_mask_from_property(const char *property) {
+ const unit_property_scope_mapping *m;
+
+ assert(property);
+
+ m = unit_property_scope_mapping_lookup(property, strlen(property));
+ if (m)
+ return m->scope;
+
+ return _UNIT_MASK_MAX;
+
+}
+
+bool unit_can_have_property(UnitType t, const char *property) {
+ UnitMask m;
+
+ assert(property);
+
+ m = unit_get_mask_from_property(property);
+ return !!((1ULL << t) & m);
+}
diff --git a/src/shared/unit-name.h b/src/shared/unit-name.h
index daeb56a..e1d4e27 100644
--- a/src/shared/unit-name.h
+++ b/src/shared/unit-name.h
@@ -28,6 +28,7 @@
#define UNIT_NAME_MAX 256
typedef enum UnitType UnitType;
+typedef enum UnitMask UnitMask;
typedef enum UnitLoadState UnitLoadState;
typedef enum UnitDependency UnitDependency;
@@ -49,6 +50,23 @@ enum UnitType {
_UNIT_TYPE_INVALID = -1
};
+enum UnitMask {
+ UNIT_MASK_SERVICE = 1ULL << UNIT_SERVICE,
+ UNIT_MASK_SOCKET = 1ULL << UNIT_SOCKET,
+ UNIT_MASK_BUSNAME = 1ULL << UNIT_BUSNAME,
+ UNIT_MASK_TARGET = 1ULL << UNIT_TARGET,
+ UNIT_MASK_SNAPSHOT = 1ULL << UNIT_SNAPSHOT,
+ UNIT_MASK_DEVICE = 1ULL << UNIT_DEVICE,
+ UNIT_MASK_MOUNT = 1ULL << UNIT_MOUNT,
+ UNIT_MASK_AUTOMOUNT = 1ULL << UNIT_AUTOMOUNT,
+ UNIT_MASK_SWAP = 1ULL << UNIT_SWAP,
+ UNIT_MASK_TIMER = 1ULL << UNIT_TIMER,
+ UNIT_MASK_PATH = 1ULL << UNIT_PATH,
+ UNIT_MASK_SLICE = 1ULL << UNIT_SLICE,
+ UNIT_MASK_SCOPE = 1ULL << UNIT_SCOPE,
+ _UNIT_MASK_MAX = 1ULL <<_UNIT_TYPE_MAX,
+};
+
enum UnitLoadState {
UNIT_STUB = 0,
UNIT_LOADED,
@@ -163,3 +181,11 @@ int build_subslice(const char *slice, const char*name, char **subslice);
const char *unit_dependency_to_string(UnitDependency i) _const_;
UnitDependency unit_dependency_from_string(const char *s) _pure_;
+
+struct unit_property_scope_mapping {
+ const char* property;
+ UnitMask scope;
+};
+typedef struct unit_property_scope_mapping unit_property_scope_mapping;
+const unit_property_scope_mapping* unit_property_scope_mapping_lookup (register const char *str, register unsigned int len);
+bool unit_can_have_property(UnitType t, const char *property);
diff --git a/src/shared/unit-property-scope.gperf b/src/shared/unit-property-scope.gperf
new file mode 100644
index 0000000..bbcfcba
--- /dev/null
+++ b/src/shared/unit-property-scope.gperf
@@ -0,0 +1,202 @@
+%{
+#include "unit-name.h"
+#include "bus-util.h"
+%}
+unit_property_scope_mapping;
+%null_strings
+%language=ANSI-C
+%define slot-name property
+%define hash-function-name bus_property_scope_mapping_hash
+%define lookup-function-name unit_property_scope_mapping_lookup
+%readonly-tables
+%omit-struct-type
+%struct-type
+%includes
+%%
+Description, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+Documentation, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+Requires, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+RequiresOverridable, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+Requisite, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+RequisiteOverridable, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+Wants, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+BindsTo, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+PartOf, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+Conflicts, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+Before, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+After, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+OnFailure, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+PropagatesReloadTo, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ReloadPropagatedFrom, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+JoinsNamespaceOf, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+RequiresMountsFor, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+OnFailureJobMode, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+IgnoreOnIsolate, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+IgnoreOnSnapshot, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+StopWhenUnneeded, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+RefuseManualStart, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+RefuseManualStop, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+AllowIsolate, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+DefaultDependencies, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+JobTimeoutSec, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+JobTimeoutAction, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+JobTimeoutRebootArgument, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionArchitecture, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionVirtualization, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionHost, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionKernelCommandLine, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionSecurity, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionCapability, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionACPower, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionNeedsUpdate, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionFirstBoot, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionPathExists, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionPathExistsGlob, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionPathIsDirectory, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionPathIsSymbolicLink, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionPathIsMountPoint, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionPathIsReadWrite, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionDirectoryNotEmpty, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionFileNotEmpty, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionFileIsExecutable, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+ConditionNull, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+SourcePath, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+Alias, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+WantedBy, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+RequiredBy, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+Also, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+DefaultInstance, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
+#
+Type, UNIT_MASK_SERVICE
+RemainAfterExit, UNIT_MASK_SERVICE
+GuessMainPID, UNIT_MASK_SERVICE
+PIDFile, UNIT_MASK_SERVICE
+BusName, UNIT_MASK_SERVICE
+BusPolicy, UNIT_MASK_SERVICE
+ExecStart, UNIT_MASK_SERVICE
+ExecStartPre, UNIT_MASK_SERVICE
+ExecStartPost, UNIT_MASK_SERVICE
+ExecReload, UNIT_MASK_SERVICE
+ExecStop, UNIT_MASK_SERVICE
+ExecStopPost, UNIT_MASK_SERVICE
+RestartSec, UNIT_MASK_SERVICE
+TimeoutStartSec, UNIT_MASK_SERVICE
+TimeoutStopSec, UNIT_MASK_SERVICE
+TimeoutSec, UNIT_MASK_SERVICE
+WatchdogSec, UNIT_MASK_SERVICE
+Restart, UNIT_MASK_SERVICE
+SuccessExitStatus, UNIT_MASK_SERVICE
+RestartPreventExitStatus, UNIT_MASK_SERVICE
+RestartForceExitStatus, UNIT_MASK_SERVICE
+PermissionsStartOnly, UNIT_MASK_SERVICE
+RootDirectoryStartOnly, UNIT_MASK_SERVICE
+NonBlocking, UNIT_MASK_SERVICE
+NotifyAccess, UNIT_MASK_SERVICE
+Sockets, UNIT_MASK_SERVICE
+StartLimitInterval, UNIT_MASK_SERVICE
+StartLimitBurst, UNIT_MASK_SERVICE
+StartLimitAction, UNIT_MASK_SERVICE
+FailureAction, UNIT_MASK_SERVICE
+RebootArgument, UNIT_MASK_SERVICE
+SysVStartPriority, UNIT_MASK_SERVICE
+#
+OnActiveSec, UNIT_MASK_TIMER
+OnBootSec, UNIT_MASK_TIMER
+OnStartupSec, UNIT_MASK_TIMER
+OnUnitActiveSec, UNIT_MASK_TIMER
+OnUnitInactiveSec, UNIT_MASK_TIMER
+OnCalendar, UNIT_MASK_TIMER
+AccuracySec, UNIT_MASK_TIMER
+Unit, UNIT_MASK_TIMER
+Persistent, UNIT_MASK_TIMER
+WakeSystem, UNIT_MASK_TIMER
+#
+CPUAccounting, UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+CPUShares, UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+StartupCPUShares, UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+CPUQuota, UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+MemoryAccounting, UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+MemoryLimit, UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+BlockIOAccounting, UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+BlockIOWeight, UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+StartupBlockIOWeight, UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+BlockIODeviceWeight, UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+BlockIOReadBandwidth, UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+BlockIOWriteBandwidth, UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+DeviceAllow, UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+DevicePolicy, UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+Slice, UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+#
+WorkingDirectory, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+RootDirectory, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+Group, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+SupplementaryGroups, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+Nice, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+OOMScoreAdjust, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+IOSchedulingClass, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+IOSchedulingPriority, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+CPUSchedulingPolicy, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+CPUSchedulingPriority, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+CPUSchedulingResetOnFork, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+CPUAffinity, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+UMask, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+Environment, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+EnvironmentFile, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+StandardInput, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+StandardOutput, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+StandardError, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+TTYPath, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+TTYReset, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+TTYVHangup, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+TTYVTDisallocate, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+SyslogIdentifier, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+SyslogFacility, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+SyslogLevel, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+SyslogLevelPrefix, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+TimerSlackNSec, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+LimitCPU, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+LimitFSIZE, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+LimitDATA, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+LimitSTACK, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+LimitCORE, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+LimitRSS, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+LimitNOFILE, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+LimitAS, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+LimitNPROC, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+LimitMEMLOCK, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+LimitLOCKS, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+LimitSIGPENDING, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+LimitMSGQUEUE, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+LimitNICE, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+LimitRTPRIO, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+LimitRTTIME, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+PAMName, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+CapabilityBoundingSet, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+SecureBits, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+Capabilities, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+ReadWriteDirectories, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+ReadOnlyDirectories, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+InaccessibleDirectories, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+PrivateTmp, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+PrivateDevices, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+PrivateNetwork, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+ProtectSystem, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+ProtectHome, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+MountFlags, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+UtmpIdentifier, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+SELinuxContext, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+AppArmorProfile, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+IgnoreSIGPIPE, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+NoNewPrivileges, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+SystemCallFilter, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+SystemCallErrorNumber, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+SystemCallArchitectures, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+RestrictAddressFamilies, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+Personality, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+RuntimeDirectory, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+RuntimeDirectoryMode, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
+#
+KillMode, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP|UNIT_MASK_SCOPE
+KillSignal, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP|UNIT_MASK_SCOPE
+SendSIGHUP, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP|UNIT_MASK_SCOPE
+SendSIGKILL, UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP|UNIT_MASK_SCOPE
--
1.9.3
More information about the systemd-devel
mailing list