From a95532a8ea22ce9ccc385cff97aa0a08f86da72f Mon Sep 17 00:00:00 2001 From: Tom Hromatka Date: Wed, 15 Dec 2021 21:22:20 +0000 Subject: [PATCH] libcgroup.so: Add a function to get the library version Add a function, cgroup_version(), that returns the current version of the libcgroup library. Signed-off-by: Tom Hromatka Reviewed-by: Kamalesh Babulal --- configure.ac | 1 + include/libcgroup/.gitignore | 1 + include/libcgroup/groups.h | 10 ++++++++++ include/libcgroup/{init.h => init.h.in} | 19 +++++++++++++++++++ src/api.c | 11 +++++++++++ src/libcgroup-internal.h | 10 ---------- src/libcgroup.map | 1 + 7 files changed, 43 insertions(+), 10 deletions(-) create mode 100644 include/libcgroup/.gitignore rename include/libcgroup/{init.h => init.h.in} (80%) diff --git a/configure.ac b/configure.ac index 2e6b0a5a..b87ba2bd 100644 --- a/configure.ac +++ b/configure.ac @@ -207,6 +207,7 @@ AC_CONFIG_FILES([Makefile scripts/init.d/cgred samples/Makefile include/Makefile + include/libcgroup/init.h doc/Makefile doc/man/Makefile dist/Makefile diff --git a/include/libcgroup/.gitignore b/include/libcgroup/.gitignore new file mode 100644 index 00000000..6d7255a8 --- /dev/null +++ b/include/libcgroup/.gitignore @@ -0,0 +1 @@ +init.h diff --git a/include/libcgroup/groups.h b/include/libcgroup/groups.h index 0960a7d3..c30cbb94 100644 --- a/include/libcgroup/groups.h +++ b/include/libcgroup/groups.h @@ -607,6 +607,16 @@ int cgroup_convert_cgroup(struct cgroup * const out_cgroup, const struct cgroup * const in_cgroup, enum cg_version_t in_version); +/** + * Get the cgroup version of a controller. Version is set to CGROUP_UNK + * if the version cannot be determined. + * + * @param controller The controller of interest + * @param version The version of the controller + */ +int cgroup_get_controller_version(const char * const controller, + enum cg_version_t * const version); + /** * @} * @} diff --git a/include/libcgroup/init.h b/include/libcgroup/init.h.in similarity index 80% rename from include/libcgroup/init.h rename to include/libcgroup/init.h.in index ea2dcc98..9c63e684 100644 --- a/include/libcgroup/init.h +++ b/include/libcgroup/init.h.in @@ -13,6 +13,25 @@ extern "C" { #endif +#define CGROUP_VER_MAJOR @LIBRARY_VERSION_MAJOR@ +#define CGROUP_VER_MINOR @LIBRARY_VERSION_MINOR@ +#define CGROUP_VER_RELEASE @LIBRARY_VERSION_RELEASE@ + +struct cgroup_library_version { + unsigned int major; + unsigned int minor; + unsigned int release; +}; + +/** + * Query the library version information + * + * This function returns a pointer to a populated cgroup_library_version + * struct. The caller does not need to free the structure when finished. + * + */ +const struct cgroup_library_version *cgroup_version(void); + /** * @defgroup group_init 1. Initialization * @{ diff --git a/src/api.c b/src/api.c index 353f82fd..ae4761e5 100644 --- a/src/api.c +++ b/src/api.c @@ -50,6 +50,12 @@ #include #include +const struct cgroup_library_version library_version = { + .major = CGROUP_VER_MAJOR, + .minor = CGROUP_VER_MINOR, + .release = CGROUP_VER_RELEASE, +}; + /* * The errno which happend the last time (have to be thread specific) */ @@ -5777,3 +5783,8 @@ int cgroup_get_controller_version(const char * const controller, return ECGROUPNOTEXIST; } + +const struct cgroup_library_version *cgroup_version(void) +{ + return &library_version; +} diff --git a/src/libcgroup-internal.h b/src/libcgroup-internal.h index 16a92658..e704adae 100644 --- a/src/libcgroup-internal.h +++ b/src/libcgroup-internal.h @@ -308,16 +308,6 @@ extern void cgroup_dictionary_iterator_end(void **handle); */ int cg_chmod_path(const char *path, mode_t mode, int owner_is_umask); -/** - * Get the cgroup version of a controller. Version is set to CGROUP_UNK - * if the version cannot be determined. - * - * @param controller The controller of interest - * @param version The version of the controller - */ -int cgroup_get_controller_version(const char * const controller, - enum cg_version_t * const version); - /** * Build the path to the tasks or cgroup.procs file * diff --git a/src/libcgroup.map b/src/libcgroup.map index 3ce7e1b0..99788ac5 100644 --- a/src/libcgroup.map +++ b/src/libcgroup.map @@ -144,4 +144,5 @@ CGROUP_3.0 { cgroup_convert_cgroup; cgroup_cgxget; cgroup_cgxset; + cgroup_version; } CGROUP_2.0; -- 2.47.2