This patch makes the function check_task() capable of checking if a pid other than the calling process is attached to a particlular group. Earlier it was checking for the calling process only. For optimization purpose 0 is used to indicate that the task to be attached is the current task and hence call cgroup_gettid() only once.
Signed-off-by: Sudhir Kumar <[email protected]> Acked-by: Dhaval Giani <[email protected]> Acked-by: Balbir Singh <[email protected]> --- tests/libcgrouptest.h | 2 +- tests/test_functions.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) Index: trunk/tests/test_functions.c =================================================================== --- trunk.orig/tests/test_functions.c +++ trunk/tests/test_functions.c @@ -94,12 +94,12 @@ void test_cgroup_attach_task(int retcode build_path(tasksfile, mountpoint, group1, "tasks"); - if (check_task(tasksfile)) { + if (check_task(tasksfile, 0)) { /* multiple mounts */ if (fs_mounted == 2) { build_path(tasksfile2, mountpoint2, group2, "tasks"); - if (check_task(tasksfile2)) { + if (check_task(tasksfile2, 0)) { message(i, PASS, "attach_task()", retval, info[TASKINGRP]); } else { @@ -600,7 +600,7 @@ error: /* * @param tasksfile the task file to be tested for the task */ -int check_task(char *tasksfile) +int check_task(char *tasksfile, pid_t pid) { FILE *file; pid_t curr_tid, tid; @@ -613,7 +613,11 @@ int check_task(char *tasksfile) exit(1); } - curr_tid = cgrouptest_gettid(); + if (pid) + curr_tid = pid; + else + curr_tid = cgrouptest_gettid(); + while (!feof(file)) { fscanf(file, "%u", &tid); if (tid == curr_tid) { Index: trunk/tests/libcgrouptest.h =================================================================== --- trunk.orig/tests/libcgrouptest.h +++ trunk/tests/libcgrouptest.h @@ -138,7 +138,7 @@ struct cgroup *new_cgroup(char *group, c char *control_file, int value_type, struct cntl_val_t cval, struct uid_gid_t ids, int i); int check_fsmounted(int multimnt); -int check_task(char *tasksfile); +int check_task(char *tasksfile, pid_t pid); /* function to print messages in better format */ void message(int num, int pass, const char *api, int ret, char *extra); ------------------------------------------------------------------------------ Check out the new SourceForge.net Marketplace. It is the best place to buy or sell services for just about anything Open Source. http://p.sf.net/sfu/Xq1LFB _______________________________________________ Libcg-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libcg-devel
