/* Tiny cgroup manipulation toolkit. libcgroup is a mess. */ #ifndef CGROUP__H #define CGROUP__H #include <stdbool.h> #include <sys/types.h> /* In case of errors, this function is called; it is expected to * report @s and errno contents. By default, it is bound to perror, * but you can change that if you want e.g. to syslog errors. */ extern void (*cgroup_perror)(const char *s); /* Setup the cgroups machinery and @chier cgroups hierarchy using * @controllers. Return 0 if cgroups already set up, 1 on success, * -1 on failure. */ int cgroup_setup(const char *chier, const char *controllers); /* Setup a given control group. Return 0 if cgroups already set up, * 1 on success, -1 on failure. */ int cgroup_create(const char *chier, const char *cgroup); /* Add a task to a given cgroup. Return 1 on success, -1 on failure. */ int cgroup_add_task(const char *chier, const char *cgroup, pid_t pid); /* Check if a task is in a given cgroup. Return 0/1, -1 on failure. */ int cgroup_is_task_in_cgroup(const char *chier, const char *cgroup, pid_t pid); /* Store a list of tasks in a given cgroup to @tasks. Returns number of tasks * or -1 on failure. */ int cgroup_task_list(const char *chier, const char *cgroup, pid_t **tasks); /* Get memory limit of a given cgroup. Return (size_t) -1 on failure. */ size_t cgroup_get_mem_limit(const char *chier, const char *cgroup); /* Set a memory limit of a given cgroup. Return 1 on success, -1 on failure. */ int cgroup_set_mem_limit(const char *chier, const char *cgroup, size_t limit); /* Get memory usage of a given cgroup. Return (size_t) -1 on failure. */ size_t cgroup_get_mem_usage(const char *chier, const char *cgroup); #endif