[PATCH] kill SET_LINKS/REMOVE_LINKS
Oleg Nesterov [Wed, 29 Mar 2006 00:11:06 +0000 (16:11 -0800)]
Both SET_LINKS() and SET_LINKS/REMOVE_LINKS() have exactly one caller, and
these callers already check thread_group_leader().

This patch kills theese macros, they mix two different things: setting
process's parent and registering it in init_task.tasks list.  Callers are
updated to do these actions by hand.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

include/linux/sched.h
kernel/exit.c
kernel/fork.c

index b4b14c3..1f16fb1 100644 (file)
@@ -1186,18 +1186,6 @@ extern void wait_task_inactive(task_t * p);
 #define remove_parent(p)       list_del_init(&(p)->sibling)
 #define add_parent(p)          list_add_tail(&(p)->sibling,&(p)->parent->children)
 
-#define REMOVE_LINKS(p) do {                                   \
-       if (thread_group_leader(p))                             \
-               list_del_init(&(p)->tasks);                     \
-       remove_parent(p);                                       \
-       } while (0)
-
-#define SET_LINKS(p) do {                                      \
-       if (thread_group_leader(p))                             \
-               list_add_tail(&(p)->tasks,&init_task.tasks);    \
-       add_parent(p);                                          \
-       } while (0)
-
 #define next_task(p)   list_entry((p)->tasks.next, struct task_struct, tasks)
 #define prev_task(p)   list_entry((p)->tasks.prev, struct task_struct, tasks)
 
index 5b5e8b6..f436a6b 100644 (file)
@@ -54,11 +54,13 @@ static void __unhash_process(struct task_struct *p)
        if (thread_group_leader(p)) {
                detach_pid(p, PIDTYPE_PGID);
                detach_pid(p, PIDTYPE_SID);
+
+               list_del_init(&p->tasks);
                if (p->pid)
                        __get_cpu_var(process_counts)--;
        }
 
-       REMOVE_LINKS(p);
+       remove_parent(p);
 }
 
 void release_task(struct task_struct * p)
index c49bd19..74c6762 100644 (file)
@@ -1181,7 +1181,7 @@ static task_t *copy_process(unsigned long clone_flags,
         */
        p->ioprio = current->ioprio;
 
-       SET_LINKS(p);
+       add_parent(p);
        if (unlikely(p->ptrace & PT_PTRACED))
                __ptrace_link(p, current->parent);
 
@@ -1191,6 +1191,8 @@ static task_t *copy_process(unsigned long clone_flags,
                p->signal->session = current->signal->session;
                attach_pid(p, PIDTYPE_PGID, process_group(p));
                attach_pid(p, PIDTYPE_SID, p->signal->session);
+
+               list_add_tail(&p->tasks, &init_task.tasks);
                if (p->pid)
                        __get_cpu_var(process_counts)++;
        }