From: Michael Tremer Date: Sat, 14 Dec 2024 13:39:42 +0000 (+0000) Subject: cgroups: Bring back convenience function to create a child group X-Git-Tag: 0.9.30~723 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=861670c3d2c4f1a9e801e3d06ea12d60bcb04eb6;p=pakfire.git cgroups: Bring back convenience function to create a child group Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/cgroup.c b/src/libpakfire/cgroup.c index dbf769f45..2581426bc 100644 --- a/src/libpakfire/cgroup.c +++ b/src/libpakfire/cgroup.c @@ -498,6 +498,11 @@ static int pakfire_cgroup_killall(struct pakfire_cgroup* cgroup) { return pakfire_cgroup_write(cgroup, "cgroup.kill", "1"); } +int pakfire_cgroup_child(struct pakfire_cgroup** child, + struct pakfire_cgroup* cgroup, const char* path, int flags) { + return pakfire_cgroup_open(child, cgroup->ctx, cgroup, path, flags); +} + /* Immediately destroys this cgroup */ diff --git a/tests/libpakfire/cgroup.c b/tests/libpakfire/cgroup.c index 549f89990..0970560b2 100644 --- a/tests/libpakfire/cgroup.c +++ b/tests/libpakfire/cgroup.c @@ -45,6 +45,33 @@ FAIL: return r; } +static int test_child(const struct test* t) { + struct pakfire_cgroup* cgroup = NULL; + struct pakfire_cgroup* child = NULL; + int r = EXIT_FAILURE; + + // Open a new cgroup + ASSERT_SUCCESS(pakfire_cgroup_create(&cgroup, t->ctx, NULL, "pakfire-test", 0)); + + // Create a child + ASSERT_SUCCESS(pakfire_cgroup_child(&child, cgroup, "child-group", 0)); + + // Destroy the cgroups again + ASSERT_SUCCESS(pakfire_cgroup_destroy(child)); + ASSERT_SUCCESS(pakfire_cgroup_destroy(cgroup)); + + // Success + r = EXIT_SUCCESS; + +FAIL: + if (child) + pakfire_cgroup_unref(child); + if (cgroup) + pakfire_cgroup_unref(cgroup); + + return r; +} + static int test_stats(const struct test* t) { struct pakfire_cgroup* cgroup = NULL; struct pakfire_jail* jail = NULL; @@ -95,6 +122,7 @@ FAIL: int main(int argc, const char* argv[]) { testsuite_add_test(test_create_and_destroy, 0); + testsuite_add_test(test_child, 0); testsuite_add_test(test_stats, TEST_WANTS_PAKFIRE); return testsuite_run(argc, argv);