X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fbasic%2Fcgroup-util.c;h=953bb86f63cf3d7a7a8dabc5ae425ba74b514156;hp=424c2b69bb1bc4f730f16a06b509309c9812a500;hb=648294227e8247f729d8cca927d3445ab1836f30;hpb=d5949929f1247b0407637a44f388365e3966ef91 diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c index 424c2b69b..953bb86f6 100644 --- a/src/basic/cgroup-util.c +++ b/src/basic/cgroup-util.c @@ -346,7 +346,7 @@ int cg_kill_recursive( while ((r = cg_read_subgroup(d, &fn)) > 0) { _cleanup_free_ char *p = NULL; - p = strjoin(path, "/", fn, NULL); + p = strjoin(path, "/", fn); free(fn); if (!p) return -ENOMEM; @@ -484,7 +484,7 @@ int cg_migrate_recursive( while ((r = cg_read_subgroup(d, &fn)) > 0) { _cleanup_free_ char *p = NULL; - p = strjoin(pfrom, "/", fn, NULL); + p = strjoin(pfrom, "/", fn); free(fn); if (!p) return -ENOMEM; @@ -567,11 +567,11 @@ static int join_path_legacy(const char *controller, const char *path, const char if (isempty(path) && isempty(suffix)) t = strappend("/sys/fs/cgroup/", dn); else if (isempty(path)) - t = strjoin("/sys/fs/cgroup/", dn, "/", suffix, NULL); + t = strjoin("/sys/fs/cgroup/", dn, "/", suffix); else if (isempty(suffix)) - t = strjoin("/sys/fs/cgroup/", dn, "/", path, NULL); + t = strjoin("/sys/fs/cgroup/", dn, "/", path); else - t = strjoin("/sys/fs/cgroup/", dn, "/", path, "/", suffix, NULL); + t = strjoin("/sys/fs/cgroup/", dn, "/", path, "/", suffix); if (!t) return -ENOMEM; @@ -591,7 +591,7 @@ static int join_path_unified(const char *path, const char *suffix, char **fs) { else if (isempty(suffix)) t = strappend("/sys/fs/cgroup/", path); else - t = strjoin("/sys/fs/cgroup/", path, "/", suffix, NULL); + t = strjoin("/sys/fs/cgroup/", path, "/", suffix); if (!t) return -ENOMEM; @@ -618,7 +618,7 @@ int cg_get_path(const char *controller, const char *path, const char *suffix, ch else if (!path) t = strdup(suffix); else - t = strjoin(path, "/", suffix, NULL); + t = strjoin(path, "/", suffix); if (!t) return -ENOMEM; @@ -889,7 +889,6 @@ int cg_set_task_access( return 0; } -#endif // 0 int cg_set_xattr(const char *controller, const char *path, const char *name, const void *value, size_t size, int flags) { _cleanup_free_ char *fs = NULL; @@ -927,6 +926,7 @@ int cg_get_xattr(const char *controller, const char *path, const char *name, voi return (int) n; } +#endif // 0 int cg_pid_get_path(const char *controller, pid_t pid, char **path) { _cleanup_fclose_ FILE *f = NULL; @@ -1155,7 +1155,7 @@ int cg_is_empty_recursive(const char *controller, const char *path) { while ((r = cg_read_subgroup(d, &fn)) > 0) { _cleanup_free_ char *p = NULL; - p = strjoin(path, "/", fn, NULL); + p = strjoin(path, "/", fn); free(fn); if (!p) return -ENOMEM; @@ -1329,7 +1329,11 @@ int cg_shift_path(const char *cgroup, const char *root, const char **shifted) { } p = path_startswith(cgroup, root); +#if 0 /// With other controllers, elogind might end up in /elogind, and *p is 0 if (p && p > cgroup) +#else + if (p && p[0] && (p > cgroup)) +#endif // 0 *shifted = p - 1; else *shifted = cgroup; @@ -2331,14 +2335,6 @@ static int cg_update_unified(void) { #if 0 /// UNNEEDED by elogind if (F_TYPE_EQUAL(fs.f_type, CGROUP2_SUPER_MAGIC)) -#else - /* elogind can not support the unified hierarchy as a controller, - * so always assume a classical hierarchy. - * If, and only *if*, someone really wants to substitute systemd-login - * in an environment managed by systemd with elogind, we might have to - * add such a support. */ - if (F_TYPE_EQUAL(fs.f_type, TMPFS_MAGIC)) { -#endif // 0 unified_cache = CGROUP_UNIFIED_ALL; else if (F_TYPE_EQUAL(fs.f_type, TMPFS_MAGIC)) { if (statfs("/sys/fs/cgroup/systemd/", &fs) < 0) @@ -2348,6 +2344,14 @@ static int cg_update_unified(void) { CGROUP_UNIFIED_SYSTEMD : CGROUP_UNIFIED_NONE; } else return -ENOMEDIUM; +#else + /* elogind can not support the unified hierarchy as a controller, + * so always assume a classical hierarchy. + * If, and only *if*, someone really wants to substitute systemd-login + * in an environment managed by systemd with elogind, we might have to + * add such a support. */ + unified_cache = CGROUP_UNIFIED_NONE; +#endif // 0 return 0; } @@ -2454,9 +2458,6 @@ bool cg_is_unified_wanted(void) { bool cg_is_legacy_wanted(void) { return !cg_is_unified_wanted(); } -#else -bool cg_is_legacy_wanted(void) { - return true; bool cg_is_unified_systemd_controller_wanted(void) { static thread_local int wanted = -1; @@ -2480,10 +2481,8 @@ bool cg_is_unified_systemd_controller_wanted(void) { return wanted; r = get_proc_cmdline_key("systemd.legacy_systemd_cgroup_controller", NULL); - if (r > 0) { if (r > 0) wanted = false; - } else { else { _cleanup_free_ char *value = NULL; @@ -2503,6 +2502,10 @@ bool cg_is_unified_systemd_controller_wanted(void) { bool cg_is_legacy_systemd_controller_wanted(void) { return cg_is_legacy_wanted() && !cg_is_unified_systemd_controller_wanted(); } +#else +bool cg_is_legacy_wanted(void) { + return true; +} #endif // 0 #if 0 /// UNNEEDED by elogind