[PATCH] pid: Implement transfer_pid and use it to simplify de_thread
[deliverable/linux.git] / kernel / pid.c
index 93e212f20671fd3b19838327366c45e3ad54ced8..6db82b68e2f881ad453f3b47a6f704cf05ba8a4b 100644 (file)
@@ -252,6 +252,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;
This page took 0.024461 seconds and 5 git commands to generate.