Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 558cb325 authored by Eric W. Biederman's avatar Eric W. Biederman Committed by Linus Torvalds
Browse files

[PATCH] pid: add do_each_pid_task



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: default avatarEric W. Biederman <ebiederm@xmission.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 22c935f4
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -119,4 +119,17 @@ extern void FASTCALL(free_pid(struct pid *pid));
				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 */