mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
[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: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
22c935f47c
commit
558cb32548
1 changed files with 13 additions and 0 deletions
|
@ -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 */
|
||||
|
|
Loading…
Reference in a new issue