]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
api: add helpers functions to check cgroup setup mode
authorKamalesh Babulal <kamalesh.babulal@oracle.com>
Tue, 25 Apr 2023 12:32:08 +0000 (12:32 +0000)
committerTom Hromatka <tom.hromatka@oracle.com>
Wed, 26 Apr 2023 19:25:25 +0000 (13:25 -0600)
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 <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
include/libcgroup/groups.h
src/libcgroup.map
src/wrapper.c

index 779d21a11f2dc72eaa97d5ccefbfb67c3b92705a..503f499c339dcf924f6a256b901c3111f088b9cd 100644 (file)
@@ -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);
+
 /**
  * @}
  * @}
index 6e564d3867704c59bf08bfeb68606bd28dcf698f..b48c71ca988c970b3a5b8ddc4a97b79dd14fc6a1 100644 (file)
@@ -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;
index e01a0c9df7e07d957b613b0910778406ce19c0ef..1ce74e77bc0332e3bb9a3963aba6396f0df7ee19 100644 (file)
@@ -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);
+}