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=9dd93d00b0a9d88e780e668c32bcc2b622627862;hp=fce0b9e5df7ebf632d0f23663d8354bf16ff7e7e;hb=d77d27f4ca2945f88343fbe72ed0bf1236ad2aa6;hpb=3c4743e938878986b5fd89119d1d050658b8024e diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c index fce0b9e5d..9dd93d00b 100644 --- a/src/basic/cgroup-util.c +++ b/src/basic/cgroup-util.c @@ -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; @@ -2331,6 +2331,8 @@ static int cg_update_unified(void) { #if 0 /// UNNEEDED by elogind if (F_TYPE_EQUAL(fs.f_type, CGROUP2_SUPER_MAGIC)) + unified_cache = CGROUP_UNIFIED_ALL; + else if (F_TYPE_EQUAL(fs.f_type, TMPFS_MAGIC)) { #else /* elogind can not support the unified hierarchy as a controller, * so always assume a classical hierarchy. @@ -2339,8 +2341,6 @@ static int cg_update_unified(void) { * 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) return -errno; @@ -2454,9 +2454,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; @@ -2503,6 +2500,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 @@ -2583,6 +2584,20 @@ int cg_blkio_weight_parse(const char *s, uint64_t *ret) { } #endif // 0 +bool is_cgroup_fs(const struct statfs *s) { + return is_fs_type(s, CGROUP_SUPER_MAGIC) || + is_fs_type(s, CGROUP2_SUPER_MAGIC); +} + +bool fd_is_cgroup_fs(int fd) { + struct statfs s; + + if (fstatfs(fd, &s) < 0) + return -errno; + + return is_cgroup_fs(&s); +} + static const char *cgroup_controller_table[_CGROUP_CONTROLLER_MAX] = { [CGROUP_CONTROLLER_CPU] = "cpu", [CGROUP_CONTROLLER_CPUACCT] = "cpuacct",