static void test_controller_is_valid(void) { assert_se(cg_controller_is_valid("foobar", false)); assert_se(cg_controller_is_valid("foo_bar", false)); assert_se(cg_controller_is_valid("name=foo", true)); assert_se(!cg_controller_is_valid("", false)); assert_se(!cg_controller_is_valid("name=", true)); assert_se(!cg_controller_is_valid("=", false)); assert_se(!cg_controller_is_valid("cpu,cpuacct", false)); assert_se(!cg_controller_is_valid("_", false)); assert_se(!cg_controller_is_valid("_foobar", false)); assert_se(!cg_controller_is_valid("tatü", false)); }
static void test_controller_is_valid(void) { assert_se(cg_controller_is_valid("foobar")); assert_se(cg_controller_is_valid("foo_bar")); assert_se(cg_controller_is_valid("name=foo")); assert_se(!cg_controller_is_valid("")); assert_se(!cg_controller_is_valid("name=")); assert_se(!cg_controller_is_valid("=")); assert_se(!cg_controller_is_valid("cpu,cpuacct")); assert_se(!cg_controller_is_valid("_")); assert_se(!cg_controller_is_valid("_foobar")); assert_se(!cg_controller_is_valid("tatü")); }
int cg_get_path(const char *controller, const char *path, const char *suffix, char **fs) { const char *p; static __thread bool good = false; assert(fs); if (controller && !cg_controller_is_valid(controller, true)) return -EINVAL; if (_unlikely_(!good)) { int r; r = path_is_mount_point("/sys/fs/cgroup", false); if (r <= 0) return r < 0 ? r : -ENOENT; /* Cache this to save a few stat()s */ good = true; } p = controller ? normalize_controller(controller) : NULL; return join_path(p, path, suffix, fs); }