Store the cgroup version in struct cgroup_controller. Each controller can be mounted separately, and thus the cgroup version is applicable at the controller level.
Signed-off-by: Tom Hromatka <tom.hroma...@oracle.com> --- src/libcgroup-internal.h | 13 +++++++------ src/wrapper.c | 11 ++++++++++- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/libcgroup-internal.h b/src/libcgroup-internal.h index 0367c60a91ec..0098d9d80a0a 100644 --- a/src/libcgroup-internal.h +++ b/src/libcgroup-internal.h @@ -83,6 +83,12 @@ __BEGIN_DECLS #define max(x,y) ((y)<(x)?(x):(y)) #define min(x,y) ((y)>(x)?(x):(y)) +enum cg_version_t { + CGROUP_UNK = 0, + CGROUP_V1, + CGROUP_V2, +}; + struct control_value { char name[FILENAME_MAX]; char value[CG_CONTROL_VALUE_MAX]; @@ -97,6 +103,7 @@ struct cgroup_controller { struct control_value *values[CG_NV_MAX]; struct cgroup *cgroup; int index; + enum cg_version_t version; }; struct cgroup { @@ -117,12 +124,6 @@ struct cg_mount_point { struct cg_mount_point *next; }; -enum cg_version_t { - CGROUP_UNK = 0, - CGROUP_V1, - CGROUP_V2, -}; - struct cg_mount_table_s { /** Controller name. */ char name[FILENAME_MAX]; diff --git a/src/wrapper.c b/src/wrapper.c index 966cb8490102..e618d9655cfa 100644 --- a/src/wrapper.c +++ b/src/wrapper.c @@ -56,7 +56,7 @@ struct cgroup *cgroup_new_cgroup(const char *name) struct cgroup_controller *cgroup_add_controller(struct cgroup *cgroup, const char *name) { - int i; + int i, ret; struct cgroup_controller *controller; if (!cgroup) @@ -86,6 +86,15 @@ struct cgroup_controller *cgroup_add_controller(struct cgroup *cgroup, controller->cgroup = cgroup; controller->index = 0; + ret = cgroup_get_controller_version(controller->name, + &controller->version); + if (ret) { + cgroup_dbg("failed to get cgroup version for controller %s\n", + controller->name); + free(controller); + return NULL; + } + cgroup->controller[cgroup->index] = controller; cgroup->index++; -- 2.26.2 _______________________________________________ Libcg-devel mailing list Libcg-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libcg-devel