diff options
| author | Linus Torvalds <torvalds@home.transmeta.com> | 2002-03-14 22:30:56 -0800 |
|---|---|---|
| committer | Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de> | 2002-03-14 22:30:56 -0800 |
| commit | 4b035e537cbcdad479b6fd875ddb33ba34dbfd5b (patch) | |
| tree | a54d7976816ccc73aff290e26e672795402dc079 /include/linux | |
| parent | 3154d91ded003170229670313ff6ded47bcf640e (diff) | |
Cleanup: use list macros for task list
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/init_task.h | 3 | ||||
| -rw-r--r-- | include/linux/sched.h | 24 |
2 files changed, 14 insertions, 13 deletions
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index 5f0f74653fda..98951775c267 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h @@ -53,8 +53,7 @@ active_mm: &init_mm, \ run_list: LIST_HEAD_INIT(tsk.run_list), \ time_slice: HZ, \ - next_task: &tsk, \ - prev_task: &tsk, \ + tasks: LIST_HEAD_INIT(tsk.tasks), \ real_parent: &tsk, \ parent: &tsk, \ children: LIST_HEAD_INIT(tsk.children), \ diff --git a/include/linux/sched.h b/include/linux/sched.h index 009436ba5de6..205c801bea22 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -250,7 +250,7 @@ struct task_struct { unsigned long cpus_allowed; unsigned int time_slice; - struct task_struct *next_task, *prev_task; + struct list_head tasks; struct mm_struct *mm, *active_mm; struct list_head local_pages; @@ -718,18 +718,17 @@ do { \ __ret; \ }) +#define remove_parent(p) list_del_init(&(p)->sibling) +#define add_parent(p, parent) list_add_tail(&(p)->sibling,&(parent)->children) + #define REMOVE_LINKS(p) do { \ - (p)->next_task->prev_task = (p)->prev_task; \ - (p)->prev_task->next_task = (p)->next_task; \ - list_del_init(&(p)->sibling); \ + list_del_init(&(p)->tasks); \ + remove_parent(p); \ } while (0) -#define SET_LINKS(p) do { \ - (p)->next_task = &init_task; \ - (p)->prev_task = init_task.prev_task; \ - init_task.prev_task->next_task = (p); \ - init_task.prev_task = (p); \ - list_add_tail(&(p)->sibling,&(p)->parent->children); \ +#define SET_LINKS(p) do { \ + list_add_tail(&(p)->tasks,&init_task.tasks); \ + add_parent(p, (p)->parent); \ } while (0) static inline struct task_struct *eldest_child(struct task_struct *p) @@ -756,8 +755,11 @@ static inline struct task_struct *younger_sibling(struct task_struct *p) return list_entry(p->sibling.next,struct task_struct,sibling); } +#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) + #define for_each_task(p) \ - for (p = &init_task ; (p = p->next_task) != &init_task ; ) + for (p = &init_task ; (p = next_task(p)) != &init_task ; ) #define for_each_thread(task) \ for (task = next_thread(current) ; task != current ; task = next_thread(task)) |
