summaryrefslogtreecommitdiff
path: root/execute.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 /execute.c
parentc9dae904f3a07ae563bd58fb2b39529c1f108915 (diff)
cgroup: add cgroupsification
Diffstat (limited to 'execute.c')
-rw-r--r--execute.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/execute.c b/execute.c
index 85d9873918..dd36038c4a 100644
--- a/execute.c
+++ b/execute.c
@@ -42,6 +42,7 @@
#include "log.h"
#include "ioprio.h"
#include "securebits.h"
+#include "cgroup.h"
static int close_fds(int except[], unsigned n_except) {
DIR *d;
@@ -508,9 +509,11 @@ int exec_spawn(const ExecCommand *command,
int *fds, unsigned n_fds,
bool apply_permissions,
bool apply_chroot,
+ CGroupBonding *cgroup_bondings,
pid_t *ret) {
pid_t pid;
+ int r;
assert(command);
assert(context);
@@ -519,11 +522,15 @@ int exec_spawn(const ExecCommand *command,
log_debug("About to execute %s", command->path);
+ if (cgroup_bondings)
+ if ((r = cgroup_bonding_realize_list(cgroup_bondings)))
+ return r;
+
if ((pid = fork()) < 0)
return -errno;
if (pid == 0) {
- int i, r;
+ int i;
sigset_t ss;
const char *username = NULL, *home = NULL;
uid_t uid = (uid_t) -1;
@@ -556,6 +563,12 @@ int exec_spawn(const ExecCommand *command,
goto fail;
}
+ if (cgroup_bondings)
+ if ((r = cgroup_bonding_install_list(cgroup_bondings, 0)) < 0) {
+ r = EXIT_CGROUP;
+ goto fail;
+ }
+
if (context->oom_adjust_set) {
char t[16];