@@ -132,8 +132,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));
@@ -834,21 +834,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,
@@ -880,18 +865,28 @@ 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));
- cgroup_dir_mk(*dir, group_name, new_dir);
+ cgroup_dir_mk(*dir, cg->group_name, new_dir);
cgroup_group_add_dir(parent, cg, new_dir);
}
@@ -56,11 +56,12 @@ static void set_cpu_quota(const struct tst_cgroup_group *const cg,
}
static void mk_cpu_cgroup(struct tst_cgroup_group **cg,
- const struct tst_cgroup_group *const cg_parent,
- const char *const cg_child_name,
- const float quota_percent)
+ const struct tst_cgroup_group *const cg_parent,
+ const char *const cg_child_name,
+ const float quota_percent)
+
{
- *cg = tst_cgroup_group_mk(cg_parent, cg_child_name);
+ *cg = tst_cgroup_group_mk(cg_parent, "%s", cg_child_name);
set_cpu_quota(*cg, quota_percent);
}
Allows the name to be formatted which is trivial because we already copy it into a buffer. Also this removes the init function which is now just unnecessary verbiage. Signed-off-by: Richard Palethorpe <rpalethorpe@suse.com> Suggested-by: Cyril Hrubis <chrubis@suse.cz> --- include/tst_cgroup.h | 5 +-- lib/tst_cgroup.c | 31 ++++++++----------- .../sched/cfs-scheduler/cfs_bandwidth01.c | 9 +++--- 3 files changed, 21 insertions(+), 24 deletions(-)