150472Speter/* SPDX-License-Identifier: GPL-2.0 */
237Srgrimes#ifndef __CGROUP_HELPERS_H
337Srgrimes#define __CGROUP_HELPERS_H
437Srgrimes
581020Srwatson#include <errno.h>
681020Srwatson#include <string.h>
781020Srwatson
837Srgrimes#define clean_errno() (errno == 0 ? "None" : strerror(errno))
981020Srwatson#define log_err(MSG, ...) fprintf(stderr, "(%s:%d: errno: %s) " MSG "\n", \
1081020Srwatson	__FILE__, __LINE__, clean_errno(), ##__VA_ARGS__)
11116119Smarkm
12116119Smarkm/* cgroupv2 related */
1381020Srwatsonint enable_controllers(const char *relative_path, const char *controllers);
1481020Srwatsonint write_cgroup_file(const char *relative_path, const char *file,
1566621Skris		      const char *buf);
1675017Speterint write_cgroup_file_parent(const char *relative_path, const char *file,
1766621Skris			     const char *buf);
1875017Speterint cgroup_setup_and_join(const char *relative_path);
19206039Sdesint get_root_cgroup(void);
20206039Sdesint create_and_get_cgroup(const char *relative_path);
2181020Srwatsonvoid remove_cgroup(const char *relative_path);
2241444Sdillonunsigned long long get_cgroup_id(const char *relative_path);
2341444Sdillonint get_cgroup1_hierarchy_id(const char *subsys_name);
2481020Srwatson
2581020Srwatsonint join_cgroup(const char *relative_path);
2681020Srwatsonint join_root_cgroup(void);
2781020Srwatsonint join_parent_cgroup(const char *relative_path);
28126863Sdes
29126863Sdesint setup_cgroup_environment(void);
3018639Spstvoid cleanup_cgroup_environment(void);
3118639Spst
3218639Spst/* cgroupv1 related */
3318639Spstint set_classid(void);
3418639Spstint join_classid(void);
3518639Spstunsigned long long get_classid_cgroup_id(void);
3618639Spstint open_classid(void);
3775017Speter
3818639Spstint setup_classid_environment(void);
3975017Spetervoid cleanup_classid_environment(void);
4018639Spst
4175017Speter#endif /* __CGROUP_HELPERS_H */
4218639Spst