Lines Matching refs:cgroup

29 static int cg_check_frozen(const char *cgroup, bool frozen)  in cg_check_frozen()  argument
32 if (cg_read_strstr(cgroup, "cgroup.events", "frozen 1") != 0) { in cg_check_frozen()
33 debug("Cgroup %s isn't frozen\n", cgroup); in cg_check_frozen()
40 if (cg_read_strstr(cgroup, "cgroup.events", "frozen 0") != 0) { in cg_check_frozen()
41 debug("Cgroup %s is frozen\n", cgroup); in cg_check_frozen()
52 static int cg_freeze_nowait(const char *cgroup, bool freeze) in cg_freeze_nowait() argument
54 return cg_write(cgroup, "cgroup.freeze", freeze ? "1" : "0"); in cg_freeze_nowait()
60 static int cg_prepare_for_wait(const char *cgroup) in cg_prepare_for_wait() argument
70 ret = inotify_add_watch(fd, cg_control(cgroup, "cgroup.events"), in cg_prepare_for_wait()
115 static int cg_enter_and_wait_for_frozen(const char *cgroup, int pid, in cg_enter_and_wait_for_frozen() argument
121 fd = cg_prepare_for_wait(cgroup); in cg_enter_and_wait_for_frozen()
125 ret = cg_enter(cgroup, pid); in cg_enter_and_wait_for_frozen()
134 ret = cg_check_frozen(cgroup, frozen); in cg_enter_and_wait_for_frozen()
149 static int cg_freeze_wait(const char *cgroup, bool freeze) in cg_freeze_wait() argument
153 fd = cg_prepare_for_wait(cgroup); in cg_freeze_wait()
157 ret = cg_freeze_nowait(cgroup, freeze); in cg_freeze_wait()
167 ret = cg_check_frozen(cgroup, freeze); in cg_freeze_wait()
177 static int child_fn(const char *cgroup, void *arg) in child_fn() argument
195 char *cgroup = NULL; in test_cgfreezer_simple() local
198 cgroup = cg_name(root, "cg_test_simple"); in test_cgfreezer_simple()
199 if (!cgroup) in test_cgfreezer_simple()
202 if (cg_create(cgroup)) in test_cgfreezer_simple()
206 cg_run_nowait(cgroup, child_fn, NULL); in test_cgfreezer_simple()
208 if (cg_wait_for_proc_count(cgroup, 100)) in test_cgfreezer_simple()
211 if (cg_check_frozen(cgroup, false)) in test_cgfreezer_simple()
214 if (cg_freeze_wait(cgroup, true)) in test_cgfreezer_simple()
217 if (cg_freeze_wait(cgroup, false)) in test_cgfreezer_simple()
223 if (cgroup) in test_cgfreezer_simple()
224 cg_destroy(cgroup); in test_cgfreezer_simple()
225 free(cgroup); in test_cgfreezer_simple()
246 char *cgroup[10] = {0}; in test_cgfreezer_tree() local
250 cgroup[0] = cg_name(root, "cg_test_tree_A"); in test_cgfreezer_tree()
251 if (!cgroup[0]) in test_cgfreezer_tree()
254 cgroup[1] = cg_name(cgroup[0], "B"); in test_cgfreezer_tree()
255 if (!cgroup[1]) in test_cgfreezer_tree()
258 cgroup[2] = cg_name(cgroup[1], "C"); in test_cgfreezer_tree()
259 if (!cgroup[2]) in test_cgfreezer_tree()
262 cgroup[3] = cg_name(cgroup[1], "D"); in test_cgfreezer_tree()
263 if (!cgroup[3]) in test_cgfreezer_tree()
266 cgroup[4] = cg_name(cgroup[0], "E"); in test_cgfreezer_tree()
267 if (!cgroup[4]) in test_cgfreezer_tree()
270 cgroup[5] = cg_name(cgroup[4], "F"); in test_cgfreezer_tree()
271 if (!cgroup[5]) in test_cgfreezer_tree()
274 cgroup[6] = cg_name(cgroup[5], "G"); in test_cgfreezer_tree()
275 if (!cgroup[6]) in test_cgfreezer_tree()
278 cgroup[7] = cg_name(cgroup[6], "H"); in test_cgfreezer_tree()
279 if (!cgroup[7]) in test_cgfreezer_tree()
282 cgroup[8] = cg_name(cgroup[0], "I"); in test_cgfreezer_tree()
283 if (!cgroup[8]) in test_cgfreezer_tree()
286 cgroup[9] = cg_name(cgroup[0], "K"); in test_cgfreezer_tree()
287 if (!cgroup[9]) in test_cgfreezer_tree()
291 if (cg_create(cgroup[i])) in test_cgfreezer_tree()
294 cg_run_nowait(cgroup[2], child_fn, NULL); in test_cgfreezer_tree()
295 cg_run_nowait(cgroup[7], child_fn, NULL); in test_cgfreezer_tree()
296 cg_run_nowait(cgroup[9], child_fn, NULL); in test_cgfreezer_tree()
297 cg_run_nowait(cgroup[9], child_fn, NULL); in test_cgfreezer_tree()
298 cg_run_nowait(cgroup[9], child_fn, NULL); in test_cgfreezer_tree()
305 if (cg_wait_for_proc_count(cgroup[2], 1) || in test_cgfreezer_tree()
306 cg_wait_for_proc_count(cgroup[7], 1) || in test_cgfreezer_tree()
307 cg_wait_for_proc_count(cgroup[9], 3)) in test_cgfreezer_tree()
313 if (cg_freeze_wait(cgroup[1], true)) in test_cgfreezer_tree()
319 if (cg_freeze_wait(cgroup[5], true)) in test_cgfreezer_tree()
325 if (cg_freeze_wait(cgroup[6], true)) in test_cgfreezer_tree()
331 if (cg_check_frozen(cgroup[0], false)) in test_cgfreezer_tree()
334 if (cg_check_frozen(cgroup[4], false)) in test_cgfreezer_tree()
340 if (cg_freeze_wait(cgroup[0], true)) in test_cgfreezer_tree()
343 if (cg_check_frozen(cgroup[1], true)) in test_cgfreezer_tree()
346 if (cg_check_frozen(cgroup[4], true)) in test_cgfreezer_tree()
352 if (cg_freeze_nowait(cgroup[1], false)) in test_cgfreezer_tree()
355 if (cg_freeze_nowait(cgroup[5], false)) in test_cgfreezer_tree()
358 if (cg_freeze_nowait(cgroup[6], false)) in test_cgfreezer_tree()
364 if (cg_check_frozen(cgroup[2], true)) in test_cgfreezer_tree()
367 if (cg_check_frozen(cgroup[7], true)) in test_cgfreezer_tree()
373 if (cg_freeze_wait(cgroup[0], false)) in test_cgfreezer_tree()
376 if (cg_check_frozen(cgroup[2], false)) in test_cgfreezer_tree()
379 if (cg_check_frozen(cgroup[9], false)) in test_cgfreezer_tree()
385 for (i = 9; i >= 0 && cgroup[i]; i--) { in test_cgfreezer_tree()
386 cg_destroy(cgroup[i]); in test_cgfreezer_tree()
387 free(cgroup[i]); in test_cgfreezer_tree()
396 static int forkbomb_fn(const char *cgroup, void *arg) in forkbomb_fn() argument
419 char *cgroup = NULL; in test_cgfreezer_forkbomb() local
421 cgroup = cg_name(root, "cg_forkbomb_test"); in test_cgfreezer_forkbomb()
422 if (!cgroup) in test_cgfreezer_forkbomb()
425 if (cg_create(cgroup)) in test_cgfreezer_forkbomb()
428 cg_run_nowait(cgroup, forkbomb_fn, NULL); in test_cgfreezer_forkbomb()
432 if (cg_freeze_wait(cgroup, true)) in test_cgfreezer_forkbomb()
435 if (cg_killall(cgroup)) in test_cgfreezer_forkbomb()
438 if (cg_wait_for_proc_count(cgroup, 0)) in test_cgfreezer_forkbomb()
444 if (cgroup) in test_cgfreezer_forkbomb()
445 cg_destroy(cgroup); in test_cgfreezer_forkbomb()
446 free(cgroup); in test_cgfreezer_forkbomb()
567 char *cgroup[2] = {0}; in test_cgfreezer_migrate() local
570 cgroup[0] = cg_name(root, "cg_test_migrate_A"); in test_cgfreezer_migrate()
571 if (!cgroup[0]) in test_cgfreezer_migrate()
574 cgroup[1] = cg_name(root, "cg_test_migrate_B"); in test_cgfreezer_migrate()
575 if (!cgroup[1]) in test_cgfreezer_migrate()
578 if (cg_create(cgroup[0])) in test_cgfreezer_migrate()
581 if (cg_create(cgroup[1])) in test_cgfreezer_migrate()
584 pid = cg_run_nowait(cgroup[0], child_fn, NULL); in test_cgfreezer_migrate()
588 if (cg_wait_for_proc_count(cgroup[0], 1)) in test_cgfreezer_migrate()
594 if (cg_freeze_wait(cgroup[1], true)) in test_cgfreezer_migrate()
597 if (cg_enter_and_wait_for_frozen(cgroup[1], pid, true)) in test_cgfreezer_migrate()
600 if (cg_check_frozen(cgroup[0], false)) in test_cgfreezer_migrate()
606 if (cg_enter_and_wait_for_frozen(cgroup[0], pid, false)) in test_cgfreezer_migrate()
609 if (cg_check_frozen(cgroup[1], true)) in test_cgfreezer_migrate()
615 if (cg_freeze_wait(cgroup[0], true)) in test_cgfreezer_migrate()
618 if (cg_enter_and_wait_for_frozen(cgroup[1], pid, true)) in test_cgfreezer_migrate()
621 if (cg_check_frozen(cgroup[0], true)) in test_cgfreezer_migrate()
627 if (cgroup[0]) in test_cgfreezer_migrate()
628 cg_destroy(cgroup[0]); in test_cgfreezer_migrate()
629 free(cgroup[0]); in test_cgfreezer_migrate()
630 if (cgroup[1]) in test_cgfreezer_migrate()
631 cg_destroy(cgroup[1]); in test_cgfreezer_migrate()
632 free(cgroup[1]); in test_cgfreezer_migrate()
642 char *cgroup = NULL; in test_cgfreezer_ptrace() local
646 cgroup = cg_name(root, "cg_test_ptrace"); in test_cgfreezer_ptrace()
647 if (!cgroup) in test_cgfreezer_ptrace()
650 if (cg_create(cgroup)) in test_cgfreezer_ptrace()
653 pid = cg_run_nowait(cgroup, child_fn, NULL); in test_cgfreezer_ptrace()
657 if (cg_wait_for_proc_count(cgroup, 1)) in test_cgfreezer_ptrace()
660 if (cg_freeze_wait(cgroup, true)) in test_cgfreezer_ptrace()
675 if (cg_check_frozen(cgroup, true)) in test_cgfreezer_ptrace()
684 if (cg_check_frozen(cgroup, true)) in test_cgfreezer_ptrace()
690 if (cgroup) in test_cgfreezer_ptrace()
691 cg_destroy(cgroup); in test_cgfreezer_ptrace()
692 free(cgroup); in test_cgfreezer_ptrace()
724 char *cgroup = NULL; in test_cgfreezer_stopped() local
726 cgroup = cg_name(root, "cg_test_stopped"); in test_cgfreezer_stopped()
727 if (!cgroup) in test_cgfreezer_stopped()
730 if (cg_create(cgroup)) in test_cgfreezer_stopped()
733 pid = cg_run_nowait(cgroup, child_fn, NULL); in test_cgfreezer_stopped()
735 if (cg_wait_for_proc_count(cgroup, 1)) in test_cgfreezer_stopped()
741 if (cg_check_frozen(cgroup, false)) in test_cgfreezer_stopped()
744 if (cg_freeze_wait(cgroup, true)) in test_cgfreezer_stopped()
747 if (cg_freeze_wait(cgroup, false)) in test_cgfreezer_stopped()
756 if (cgroup) in test_cgfreezer_stopped()
757 cg_destroy(cgroup); in test_cgfreezer_stopped()
758 free(cgroup); in test_cgfreezer_stopped()
768 char *cgroup = NULL; in test_cgfreezer_ptraced() local
771 cgroup = cg_name(root, "cg_test_ptraced"); in test_cgfreezer_ptraced()
772 if (!cgroup) in test_cgfreezer_ptraced()
775 if (cg_create(cgroup)) in test_cgfreezer_ptraced()
778 pid = cg_run_nowait(cgroup, child_fn, NULL); in test_cgfreezer_ptraced()
780 if (cg_wait_for_proc_count(cgroup, 1)) in test_cgfreezer_ptraced()
791 if (cg_check_frozen(cgroup, false)) in test_cgfreezer_ptraced()
794 if (cg_freeze_wait(cgroup, true)) in test_cgfreezer_ptraced()
801 if (cg_freeze_wait(cgroup, false)) in test_cgfreezer_ptraced()
813 if (cgroup) in test_cgfreezer_ptraced()
814 cg_destroy(cgroup); in test_cgfreezer_ptraced()
815 free(cgroup); in test_cgfreezer_ptraced()
819 static int vfork_fn(const char *cgroup, void *arg) in vfork_fn() argument
837 char *cgroup = NULL; in test_cgfreezer_vfork() local
839 cgroup = cg_name(root, "cg_test_vfork"); in test_cgfreezer_vfork()
840 if (!cgroup) in test_cgfreezer_vfork()
843 if (cg_create(cgroup)) in test_cgfreezer_vfork()
846 cg_run_nowait(cgroup, vfork_fn, NULL); in test_cgfreezer_vfork()
848 if (cg_wait_for_proc_count(cgroup, 2)) in test_cgfreezer_vfork()
851 if (cg_freeze_wait(cgroup, true)) in test_cgfreezer_vfork()
857 if (cgroup) in test_cgfreezer_vfork()
858 cg_destroy(cgroup); in test_cgfreezer_vfork()
859 free(cgroup); in test_cgfreezer_vfork()