summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@home.transmeta.com>2002-03-14 22:30:56 -0800
committerKai Germaschewski <kai@tp1.ruhr-uni-bochum.de>2002-03-14 22:30:56 -0800
commit4b035e537cbcdad479b6fd875ddb33ba34dbfd5b (patch)
treea54d7976816ccc73aff290e26e672795402dc079 /include/linux
parent3154d91ded003170229670313ff6ded47bcf640e (diff)
Cleanup: use list macros for task list
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/init_task.h3
-rw-r--r--include/linux/sched.h24
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))