[LTP] [PATCH v2 4/5] API/cgroup: Allow formatting of new cg names
Richard Palethorpe
rpalethorpe@suse.com
Thu Feb 3 09:18:18 CET 2022
Signed-off-by: Richard Palethorpe <rpalethorpe@suse.com>
---
include/tst_cgroup.h | 5 +++--
lib/tst_cgroup.c | 29 ++++++++++++-----------------
2 files changed, 15 insertions(+), 19 deletions(-)
diff --git a/include/tst_cgroup.h b/include/tst_cgroup.h
index 17adefd2b..d7a3433fa 100644
--- a/include/tst_cgroup.h
+++ b/include/tst_cgroup.h
@@ -126,8 +126,9 @@ void tst_cgroup_init(void);
/* Create a descendant CGroup */
struct tst_cgroup_group *
tst_cgroup_group_mk(const struct tst_cgroup_group *const parent,
- const char *const group_name)
- __attribute__ ((nonnull, warn_unused_result));
+ const char *const group_name_fmt, ...)
+ __attribute__ ((nonnull, warn_unused_result, format (printf, 2, 3)));
+
const char *
tst_cgroup_group_name(const struct tst_cgroup_group *const cg)
__attribute__ ((nonnull, warn_unused_result));
diff --git a/lib/tst_cgroup.c b/lib/tst_cgroup.c
index d9cd6aa8e..66f17575e 100644
--- a/lib/tst_cgroup.c
+++ b/lib/tst_cgroup.c
@@ -840,21 +840,6 @@ clear_data:
memset(roots, 0, sizeof(roots));
}
-__attribute__((nonnull(1)))
-static void cgroup_group_init(struct tst_cgroup_group *const cg,
- const char *const group_name)
-{
- memset(cg, 0, sizeof(*cg));
-
- if (!group_name)
- return;
-
- if (strlen(group_name) > NAME_MAX)
- tst_brk(TBROK, "Group name is too long");
-
- strcpy(cg->group_name, group_name);
-}
-
__attribute__((nonnull(2, 3)))
static void cgroup_group_add_dir(const struct tst_cgroup_group *const parent,
struct tst_cgroup_group *const cg,
@@ -886,14 +871,24 @@ static void cgroup_group_add_dir(const struct tst_cgroup_group *const parent,
struct tst_cgroup_group *
tst_cgroup_group_mk(const struct tst_cgroup_group *const parent,
- const char *const group_name)
+ const char *const group_name_fmt, ...)
{
struct tst_cgroup_group *cg;
struct cgroup_dir *const *dir;
struct cgroup_dir *new_dir;
+ va_list ap;
+ size_t name_len;
cg = SAFE_MALLOC(sizeof(*cg));
- cgroup_group_init(cg, group_name);
+ memset(cg, 0, sizeof(*cg));
+
+ va_start(ap, group_name_fmt);
+ name_len = vsnprintf(cg->group_name, NAME_MAX,
+ group_name_fmt, ap);
+ va_end(ap);
+
+ if (name_len >= NAME_MAX)
+ tst_brk(TBROK, "CGroup name is too long");
for_each_dir(parent, 0, dir) {
new_dir = SAFE_MALLOC(sizeof(*new_dir));
--
2.34.1
More information about the ltp
mailing list