1
0
mirror of https://github.com/systemd/systemd.git synced 2024-10-30 06:25:37 +03:00

cgroup-util: introduce cg_is_threaded()

This commit is contained in:
Yu Watanabe 2022-02-13 20:39:04 +09:00
parent bf6ef6b6a9
commit 084e7706c2
2 changed files with 26 additions and 0 deletions

View File

@ -1688,6 +1688,30 @@ int cg_slice_to_path(const char *unit, char **ret) {
return 0;
}
int cg_is_threaded(const char *controller, const char *path) {
_cleanup_free_ char *fs = NULL, *contents = NULL;
_cleanup_strv_free_ char **v = NULL;
int r;
r = cg_get_path(controller, path, "cgroup.type", &fs);
if (r < 0)
return r;
r = read_full_virtual_file(fs, &contents, NULL);
if (r == -ENOENT)
return false; /* Assume no. */
if (r < 0)
return r;
v = strv_split(contents, NULL);
if (!v)
return -ENOMEM;
/* If the cgroup is in the threaded mode, it contains "threaded".
* If one of the parents or siblings is in the threaded mode, it may contain "invalid". */
return strv_contains(v, "threaded") || strv_contains(v, "invalid");
}
int cg_set_attribute(const char *controller, const char *path, const char *attribute, const char *value) {
_cleanup_free_ char *p = NULL;
int r;

View File

@ -205,6 +205,8 @@ int cg_pid_get_path(const char *controller, pid_t pid, char **path);
int cg_rmdir(const char *controller, const char *path);
int cg_is_threaded(const char *controller, const char *path);
typedef enum {
CG_KEY_MODE_GRACEFUL = 1 << 0,
} CGroupKeyMode;