From 803ceeee23bcb4ad38e32c0069fff3b19c2d48ac Mon Sep 17 00:00:00 2001 From: Kamalesh Babulal Date: Tue, 25 Apr 2023 12:32:08 +0000 Subject: [PATCH] api: add helpers functions to check cgroup setup mode Add helpers functions is_cgroup_mode_{legacy,hybrid,unified}() to check for a particular cgroup setup mode. Also, export them. Signed-off-by: Kamalesh Babulal Signed-off-by: Tom Hromatka --- include/libcgroup/groups.h | 18 ++++++++++++++++++ src/libcgroup.map | 3 +++ src/wrapper.c | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+) diff --git a/include/libcgroup/groups.h b/include/libcgroup/groups.h index 779d21a1..503f499c 100644 --- a/include/libcgroup/groups.h +++ b/include/libcgroup/groups.h @@ -675,6 +675,24 @@ struct cgroup_controller *cgroup_get_controller_by_index(struct cgroup *cgroup, */ char *cgroup_get_controller_name(struct cgroup_controller *controller); +/** + * Return true if cgroup setup mode is cgroup v1 (legacy), else + * returns false. + */ +bool is_cgroup_mode_legacy(void); + +/** + * Return true if cgroup setup mode is cgroup v1/v2 (hybrid), else + * returns false. + */ +bool is_cgroup_mode_hybrid(void); + +/** + * Return true if cgroup setup mode is cgroup v2 (unified), else + * returns false. + */ +bool is_cgroup_mode_unified(void); + /** * @} * @} diff --git a/src/libcgroup.map b/src/libcgroup.map index 6e564d38..b48c71ca 100644 --- a/src/libcgroup.map +++ b/src/libcgroup.map @@ -158,4 +158,7 @@ CGROUP_3.0 { cgroup_set_default_systemd_cgroup; cgroup_write_systemd_default_cgroup; cgroup_setup_mode; + is_cgroup_mode_legacy; + is_cgroup_mode_hybrid; + is_cgroup_mode_unified; } CGROUP_2.0; diff --git a/src/wrapper.c b/src/wrapper.c index e01a0c9d..1ce74e77 100644 --- a/src/wrapper.c +++ b/src/wrapper.c @@ -793,3 +793,40 @@ char *cgroup_get_cgroup_name(struct cgroup *cgroup) return cgroup->name; } + + +/* + * Return true if cgroup setup mode is cgroup v1 (legacy), else + * returns false. + */ +bool is_cgroup_mode_legacy(void) +{ + enum cg_setup_mode_t setup_mode; + + setup_mode = cgroup_setup_mode(); + return (setup_mode == CGROUP_MODE_LEGACY); +} + +/* + * Return true if cgroup setup mode is cgroup v1/v2 (hybrid), else + * returns false. + */ +bool is_cgroup_mode_hybrid(void) +{ + enum cg_setup_mode_t setup_mode; + + setup_mode = cgroup_setup_mode(); + return (setup_mode == CGROUP_MODE_HYBRID); +} + +/* + * Return true if cgroup setup mode is cgroup v2 (unified), else + * returns false. + */ +bool is_cgroup_mode_unified(void) +{ + enum cg_setup_mode_t setup_mode; + + setup_mode = cgroup_setup_mode(); + return (setup_mode == CGROUP_MODE_UNIFIED); +} -- 2.47.2