From: Kamalesh Babulal Date: Tue, 25 Apr 2023 12:32:08 +0000 (+0000) Subject: api: add helpers functions to check cgroup setup mode X-Git-Tag: v3.1.0~89 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=803ceeee23bcb4ad38e32c0069fff3b19c2d48ac;p=thirdparty%2Flibcgroup.git 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 --- 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); +}