[systemd-devel] [PATCH v4 3/4] unit: add UnitMask enum and get unit scope(mask) api from property
WaLyong Cho
walyong.cho at samsung.com
Thu Dec 4 00:01:58 PST 2014
On 12/04/2014 03:43 AM, Lennart Poettering wrote:
> On Tue, 02.12.14 23:29, WaLyong Cho (walyong.cho at samsung.com) wrote:
>
> Hmm, what's the rationale for this? Can you elaborate?
As you already noticed(on the 4th mail), this hash table is used to find
unit can have a given property. As you said on 4th mail, if we use a
special option for timer then this will not be needed.
This can be also used in systemctl set-property and we can detect given
property is supported by that unit or not before sending dbus. But, in
most of case, systemctl set-property is called by user command line. And
they will know which unit support which property. So, maybe this is not
much needed.
If you feel messy, I will add --timer-property= option.
WaLyong
>
>> ---
>> 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 at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/systemd-devel
>
>
> Lennart
>
More information about the systemd-devel
mailing list