To avoid pid rollover confusion the kernel needs to work with struct pid *
instead of pid_t.  Currently there is not an iterator that walks through all
of the tasks of a given pid type starting with a struct pid.  This prevents us
replacing some pid_t instances with struct pid.  So this patch adds
do_each_pid_task which walks through the set of task for a given pid type
starting with a struct pid.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
                                1; }) );                                \
        }
 
+#define do_each_pid_task(pid, type, task)                              \
+       if ((task = pid_task(pid, type))) {                             \
+               prefetch(pid_next(task, type));                         \
+               do {
+
+#define while_each_pid_task(pid, type, task)                           \
+               } while (pid_next(task, type) &&  ({                    \
+                               task = pid_next_task(task, type);       \
+                               rcu_dereference(task);                  \
+                               prefetch(pid_next(task, type));         \
+                               1; }) );                                \
+       }
+
 #endif /* _LINUX_PID_H */