On Tue, 02.12.14 23:29, WaLyong Cho (walyong....@samsung.com) wrote: Hmm, what's the rationale for this? Can you elaborate?
> --- > 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 38d320f..3cec5fb 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 21b6691..7cf0160 100644 > --- a/src/shared/unit-name.c > +++ b/src/shared/unit-name.c > @@ -602,3 +602,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 6f139cc..191c930 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, > @@ -165,3 +183,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 > > _______________________________________________ > systemd-devel mailing list > systemd-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/systemd-devel Lennart -- Lennart Poettering, Red Hat _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel