Messages in this thread Patch in this message | | | Date | Tue, 1 Sep 2009 14:24:04 +0200 | From | Oleg Nesterov <> | Subject | [PATCH -mm 2/2] do_wait-wakeup-optimization: simplify task_pid_type() |
| |
task_pid_type() is only used by eligible_pid() which has to check wo_type != PIDTYPE_MAX anyway. Remove this check from task_pid_type() and factor out ->pids[type] access, this shrinks .text a bit and simplifies the code.
The matches the behaviour of other similar helpers, say get_task_pid(). The caller must ensure that pid_type is valid, not the callee.
Signed-off-by: Oleg Nesterov <oleg@redhat.com> ---
kernel/exit.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-)
--- WAIT/kernel/exit.c~2_WAKE_PARENT_ELIGIBLE_FIX_CLEANUP 2009-09-01 12:59:23.000000000 +0200 +++ WAIT/kernel/exit.c 2009-09-01 13:51:15.000000000 +0200 @@ -1096,17 +1096,15 @@ struct wait_opts { int notask_error; }; -static struct pid *task_pid_type(struct task_struct *task, enum pid_type type) +static inline +struct pid *task_pid_type(struct task_struct *task, enum pid_type type) { - struct pid *pid = NULL; - if (type == PIDTYPE_PID) - pid = task->pids[type].pid; - else if (type < PIDTYPE_MAX) - pid = task->group_leader->pids[type].pid; - return pid; + if (type != PIDTYPE_PID) + task = task->group_leader; + return task->pids[type].pid; } -static inline int eligible_pid(struct wait_opts *wo, struct task_struct *p) +static int eligible_pid(struct wait_opts *wo, struct task_struct *p) { return wo->wo_type == PIDTYPE_MAX || task_pid_type(p, wo->wo_type) == wo->wo_pid;
| |