chiark / gitweb /
Revert "Implement SocketUser= and SocketGroup= for [Socket]"
[elogind.git] / src / core / cgroup.c
index e07d1ed3c96d2a803c0d49d6fa4147251e936a10..8fc1731485986c08f184b6e0dbca2c03bcfc27fe 100644 (file)
@@ -31,6 +31,7 @@
 #include "cgroup-util.h"
 #include "log.h"
 #include "strv.h"
+#include "path-util.h"
 
 int cgroup_bonding_realize(CGroupBonding *b) {
         int r;
@@ -119,7 +120,7 @@ int cgroup_bonding_install(CGroupBonding *b, pid_t pid, const char *cgroup_suffi
         assert(pid >= 0);
 
         if (cgroup_suffix) {
-                p = join(b->path, "/", cgroup_suffix, NULL);
+                p = strjoin(b->path, "/", cgroup_suffix, NULL);
                 if (!p)
                         return -ENOMEM;
 
@@ -194,7 +195,7 @@ int cgroup_bonding_set_task_access_list(CGroupBonding *first, mode_t mode, uid_t
         return 0;
 }
 
-int cgroup_bonding_kill(CGroupBonding *b, int sig, bool sigcont, Set *s, const char *cgroup_suffix) {
+int cgroup_bonding_kill(CGroupBonding *b, int sig, bool sigcont, bool rem, Set *s, const char *cgroup_suffix) {
         char *p = NULL;
         const char *path;
         int r;
@@ -207,7 +208,7 @@ int cgroup_bonding_kill(CGroupBonding *b, int sig, bool sigcont, Set *s, const c
                 return 0;
 
         if (cgroup_suffix) {
-                p = join(b->path, "/", cgroup_suffix, NULL);
+                p = strjoin(b->path, "/", cgroup_suffix, NULL);
                 if (!p)
                         return -ENOMEM;
 
@@ -215,13 +216,13 @@ int cgroup_bonding_kill(CGroupBonding *b, int sig, bool sigcont, Set *s, const c
         } else
                 path = b->path;
 
-        r = cg_kill_recursive(b->controller, path, sig, sigcont, true, false, s);
+        r = cg_kill_recursive(b->controller, path, sig, sigcont, true, rem, s);
         free(p);
 
         return r;
 }
 
-int cgroup_bonding_kill_list(CGroupBonding *first, int sig, bool sigcont, Set *s, const char *cgroup_suffix) {
+int cgroup_bonding_kill_list(CGroupBonding *first, int sig, bool sigcont, bool rem, Set *s, const char *cgroup_suffix) {
         CGroupBonding *b;
         Set *allocated_set = NULL;
         int ret = -EAGAIN, r;
@@ -234,7 +235,7 @@ int cgroup_bonding_kill_list(CGroupBonding *first, int sig, bool sigcont, Set *s
                         return -ENOMEM;
 
         LIST_FOREACH(by_unit, b, first) {
-                r = cgroup_bonding_kill(b, sig, sigcont, s, cgroup_suffix);
+                r = cgroup_bonding_kill(b, sig, sigcont, rem, s, cgroup_suffix);
                 if (r < 0) {
                         if (r == -EAGAIN || r == -ESRCH)
                                 continue;
@@ -312,7 +313,7 @@ int manager_setup_cgroup(Manager *m) {
                 goto finish;
         }
 
-        if (m->running_as == MANAGER_SYSTEM)
+        if (m->running_as == SYSTEMD_SYSTEM)
                 strcpy(suffix, "/system");
         else {
                 snprintf(suffix, sizeof(suffix), "/systemd-%lu", (unsigned long) getpid());
@@ -329,8 +330,7 @@ int manager_setup_cgroup(Manager *m) {
                 /* We need a new root cgroup */
                 m->cgroup_hierarchy = NULL;
                 if (asprintf(&m->cgroup_hierarchy, "%s%s", streq(current, "/") ? "" : current, suffix) < 0) {
-                        log_error("Out of memory");
-                        r = -ENOMEM;
+                        r = log_oom();
                         goto finish;
                 }
         }