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

Reply via email to