X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fcgroup-util.h;h=25dd277ba5c7781fd779b1fc02b542c1556888c7;hb=39887731d4a36292674f92effa30e5941419c201;hp=2099f934b4eb6a186e76086f88c80d88e59c597b;hpb=ae018d9bc900d6355dea4af05119b49c67945184;p=elogind.git diff --git a/src/shared/cgroup-util.h b/src/shared/cgroup-util.h index 2099f934b..25dd277ba 100644 --- a/src/shared/cgroup-util.h +++ b/src/shared/cgroup-util.h @@ -28,6 +28,21 @@ #include "set.h" #include "def.h" +/* + * General rules: + * + * We accept named hierarchies in the syntax "foo" and "name=foo". + * + * We expect that named hierarchies do not conflict in name with a + * kernel hierarchy, modulo the "name=" prefix. + * + * We always generate "normalized" controller names, i.e. without the + * "name=" prefix. + * + * We require absolute cgroup paths. When returning, we will always + * generate paths with multiple adjacent / removed. + */ + int cg_enumerate_processes(const char *controller, const char *path, FILE **_f); int cg_enumerate_tasks(const char *controller, const char *path, FILE **_f); int cg_read_pid(FILE *f, pid_t *_pid); @@ -72,7 +87,7 @@ int cg_is_empty_recursive(const char *controller, const char *path, bool ignore_ int cg_get_root_path(char **path); int cg_get_system_path(char **path); int cg_get_user_path(char **path); -int cg_get_machine_path(char **path); +int cg_get_machine_path(const char *machine, char **path); int cg_path_get_session(const char *path, char **session); int cg_path_get_owner_uid(const char *path, uid_t *uid); @@ -95,4 +110,6 @@ char **cg_shorten_controllers(char **controllers); int cg_controller_from_attr(const char *attr, char **controller); char *cg_escape(const char *p); -char *cg_unescape(const char *p); +char *cg_unescape(const char *p) _pure_; + +bool cg_controller_is_valid(const char *p, bool allow_named);