diff options
| author | Jeff Garzik <jeff@garzik.org> | 2006-09-27 18:16:47 -0400 |
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2006-09-27 18:16:47 -0400 |
| commit | 3b9f6cb8a1ec791be79c6c7595fea922f12d1e64 (patch) | |
| tree | 2393a448add846e6c2ed12f68106c3018b72c6a9 /kernel/pid.c | |
| parent | c38778c3a9aeadcd1ee319cfc8ea5a9cbf8cdafa (diff) | |
| parent | a77c64c1a641950626181b4857abb701d8f38ccc (diff) | |
Merge branch 'master' into upstream
Diffstat (limited to 'kernel/pid.c')
| -rw-r--r-- | kernel/pid.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/kernel/pid.c b/kernel/pid.c index 93e212f20671..8387e8c68193 100644 --- a/kernel/pid.c +++ b/kernel/pid.c @@ -223,9 +223,6 @@ int fastcall attach_pid(struct task_struct *task, enum pid_type type, int nr) struct pid_link *link; struct pid *pid; - WARN_ON(!task->pid); /* to be removed soon */ - WARN_ON(!nr); /* to be removed soon */ - link = &task->pids[type]; link->pid = pid = find_pid(nr); hlist_add_head_rcu(&link->node, &pid->tasks[type]); @@ -252,6 +249,15 @@ void fastcall detach_pid(struct task_struct *task, enum pid_type type) free_pid(pid); } +/* transfer_pid is an optimization of attach_pid(new), detach_pid(old) */ +void fastcall transfer_pid(struct task_struct *old, struct task_struct *new, + enum pid_type type) +{ + new->pids[type].pid = old->pids[type].pid; + hlist_replace_rcu(&old->pids[type].node, &new->pids[type].node); + old->pids[type].pid = NULL; +} + struct task_struct * fastcall pid_task(struct pid *pid, enum pid_type type) { struct task_struct *result = NULL; |
