summaryrefslogtreecommitdiff
path: root/load-fragment.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-03-31 16:29:55 +0200
committerLennart Poettering <lennart@poettering.net>2010-03-31 16:29:55 +0200
commit8e27452380193a5f81bfd08a59aab8b07008ba0b (patch)
tree7ea3398a0cff784e5c45416bec5104597aaa3625 /load-fragment.c
parentc9dae904f3a07ae563bd58fb2b39529c1f108915 (diff)
cgroup: add cgroupsification
Diffstat (limited to 'load-fragment.c')
-rw-r--r--load-fragment.c35
1 files changed, 34 insertions, 1 deletions
diff --git a/load-fragment.c b/load-fragment.c
index 0b43c81194..bf17111482 100644
--- a/load-fragment.c
+++ b/load-fragment.c
@@ -943,6 +943,37 @@ static int config_parse_limit(
return 0;
}
+static int config_parse_cgroup(
+ const char *filename,
+ unsigned line,
+ const char *section,
+ const char *lvalue,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ Unit *u = userdata;
+ char *w;
+ size_t l;
+ char *state;
+
+ FOREACH_WORD(w, l, rvalue, state) {
+ char *t;
+ int r;
+
+ if (!(t = strndup(w, l)))
+ return -ENOMEM;
+
+ r = unit_add_cgroup_from_text(u, t);
+ free(t);
+
+ if (r < 0)
+ return r;
+ }
+
+ return 0;
+}
+
#define FOLLOW_MAX 8
static int open_follow(char **filename, FILE **_f, Set *names, char **_id) {
@@ -1067,7 +1098,8 @@ static int load_from_path(Unit *u, const char *path) {
{ "LimitNICE", config_parse_limit, &(context).rlimit[RLIMIT_NICE], section }, \
{ "LimitRTPRIO", config_parse_limit, &(context).rlimit[RLIMIT_RTPRIO], section }, \
{ "LimitRTTIME", config_parse_limit, &(context).rlimit[RLIMIT_RTTIME], section }, \
- { "NonBlocking", config_parse_bool, &(context).non_blocking, section }
+ { "NonBlocking", config_parse_bool, &(context).non_blocking, section }, \
+ { "ControlGroup", config_parse_cgroup, u, section } \
const ConfigItem items[] = {
{ "Names", config_parse_names, u, "Meta" },
@@ -1096,6 +1128,7 @@ static int load_from_path(Unit *u, const char *path) {
{ "Restart", config_parse_service_restart, &u->service, "Service" },
{ "PermissionsStartOnly", config_parse_bool, &u->service.permissions_start_only, "Service" },
{ "RootDirectoryStartOnly", config_parse_bool, &u->service.root_directory_start_only, "Service" },
+ { "ValidNoProcess", config_parse_bool, &u->service.valid_no_process, "Service" },
EXEC_CONTEXT_CONFIG_ITEMS(u->service.exec_context, "Service"),
{ "ListenStream", config_parse_listen, &u->socket, "Socket" },