diff options
author | Roman Zippel <zippel@linux-m68k.org> | 2007-05-09 05:35:17 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-09 15:30:56 -0400 |
commit | f7e4217b007d1f73e7e3cf10ba4fea4a608c603f (patch) | |
tree | 9c3932bb871d4b6727dc588e4d6c9987637aaee5 /include | |
parent | c9f4f06d3191bd91c1a081b54a6c8e913e7b8a83 (diff) |
rename thread_info to stack
This finally renames the thread_info field in task structure to stack, so that
the assumptions about this field are gone and archs have more freedom about
placing the thread_info structure.
Nonbroken archs which have a proper thread pointer can do the access to both
current thread and task structure via a single pointer.
It'll allow for a few more cleanups of the fork code, from which e.g. ia64
could benefit.
Signed-off-by: Roman Zippel <zippel@linux-m68k.org>
[akpm@linux-foundation.org: build fix]
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Ian Molton <spyro@f2s.com>
Cc: Haavard Skinnemoen <hskinnemoen@atmel.com>
Cc: Mikael Starvik <starvik@axis.com>
Cc: David Howells <dhowells@redhat.com>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: "Luck, Tony" <tony.luck@intel.com>
Cc: Hirokazu Takata <takata@linux-m32r.org>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Roman Zippel <zippel@linux-m68k.org>
Cc: Greg Ungerer <gerg@uclinux.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Paul Mundt <lethal@linux-sh.org>
Cc: Kazumoto Kojima <kkojima@rr.iij4u.or.jp>
Cc: Richard Curnow <rc@rc0.org.uk>
Cc: William Lee Irwin III <wli@holomorphy.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Jeff Dike <jdike@addtoit.com>
Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Cc: Miles Bader <uclinux-v850@lsi.nec.co.jp>
Cc: Andi Kleen <ak@muc.de>
Cc: Chris Zankel <chris@zankel.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-alpha/thread_info.h | 8 | ||||
-rw-r--r-- | include/asm-blackfin/processor.h | 6 | ||||
-rw-r--r-- | include/asm-blackfin/system.h | 4 | ||||
-rw-r--r-- | include/asm-m68k/thread_info.h | 6 | ||||
-rw-r--r-- | include/asm-x86_64/system.h | 2 | ||||
-rw-r--r-- | include/linux/init_task.h | 2 | ||||
-rw-r--r-- | include/linux/sched.h | 8 |
7 files changed, 18 insertions, 18 deletions
diff --git a/include/asm-alpha/thread_info.h b/include/asm-alpha/thread_info.h index eeb3bef91e11..f4defc2bd3fb 100644 --- a/include/asm-alpha/thread_info.h +++ b/include/asm-alpha/thread_info.h | |||
@@ -97,7 +97,7 @@ register struct thread_info *__current_thread_info __asm__("$8"); | |||
97 | 1 << TIF_UAC_SIGBUS) | 97 | 1 << TIF_UAC_SIGBUS) |
98 | 98 | ||
99 | #define SET_UNALIGN_CTL(task,value) ({ \ | 99 | #define SET_UNALIGN_CTL(task,value) ({ \ |
100 | (task)->thread_info->flags = (((task)->thread_info->flags & \ | 100 | task_thread_info(task)->flags = ((task_thread_info(task)->flags & \ |
101 | ~ALPHA_UAC_MASK) \ | 101 | ~ALPHA_UAC_MASK) \ |
102 | | (((value) << ALPHA_UAC_SHIFT) & (1<<TIF_UAC_NOPRINT))\ | 102 | | (((value) << ALPHA_UAC_SHIFT) & (1<<TIF_UAC_NOPRINT))\ |
103 | | (((value) << (ALPHA_UAC_SHIFT + 1)) & (1<<TIF_UAC_SIGBUS)) \ | 103 | | (((value) << (ALPHA_UAC_SHIFT + 1)) & (1<<TIF_UAC_SIGBUS)) \ |
@@ -105,11 +105,11 @@ register struct thread_info *__current_thread_info __asm__("$8"); | |||
105 | 0; }) | 105 | 0; }) |
106 | 106 | ||
107 | #define GET_UNALIGN_CTL(task,value) ({ \ | 107 | #define GET_UNALIGN_CTL(task,value) ({ \ |
108 | put_user(((task)->thread_info->flags & (1 << TIF_UAC_NOPRINT)) \ | 108 | put_user((task_thread_info(task)->flags & (1 << TIF_UAC_NOPRINT))\ |
109 | >> ALPHA_UAC_SHIFT \ | 109 | >> ALPHA_UAC_SHIFT \ |
110 | | ((task)->thread_info->flags & (1 << TIF_UAC_SIGBUS)) \ | 110 | | (task_thread_info(task)->flags & (1 << TIF_UAC_SIGBUS))\ |
111 | >> (ALPHA_UAC_SHIFT + 1) \ | 111 | >> (ALPHA_UAC_SHIFT + 1) \ |
112 | | ((task)->thread_info->flags & (1 << TIF_UAC_NOFIX)) \ | 112 | | (task_thread_info(task)->flags & (1 << TIF_UAC_NOFIX))\ |
113 | >> (ALPHA_UAC_SHIFT - 1), \ | 113 | >> (ALPHA_UAC_SHIFT - 1), \ |
114 | (int __user *)(value)); \ | 114 | (int __user *)(value)); \ |
115 | }) | 115 | }) |
diff --git a/include/asm-blackfin/processor.h b/include/asm-blackfin/processor.h index 997465c93e82..0336ff132c16 100644 --- a/include/asm-blackfin/processor.h +++ b/include/asm-blackfin/processor.h | |||
@@ -58,10 +58,10 @@ do { \ | |||
58 | (_regs)->pc = (_pc); \ | 58 | (_regs)->pc = (_pc); \ |
59 | if (current->mm) \ | 59 | if (current->mm) \ |
60 | (_regs)->p5 = current->mm->start_data; \ | 60 | (_regs)->p5 = current->mm->start_data; \ |
61 | current->thread_info->l1_task_info.stack_start \ | 61 | task_thread_info(current)->l1_task_info.stack_start \ |
62 | = (void *)current->mm->context.stack_start; \ | 62 | = (void *)current->mm->context.stack_start; \ |
63 | current->thread_info->l1_task_info.lowest_sp = (void *)(_usp); \ | 63 | task_thread_info(current)->l1_task_info.lowest_sp = (void *)(_usp); \ |
64 | memcpy(L1_SCRATCH_TASK_INFO, ¤t->thread_info->l1_task_info, \ | 64 | memcpy(L1_SCRATCH_TASK_INFO, &task_thread_info(current)->l1_task_info, \ |
65 | sizeof(*L1_SCRATCH_TASK_INFO)); \ | 65 | sizeof(*L1_SCRATCH_TASK_INFO)); \ |
66 | wrusp(_usp); \ | 66 | wrusp(_usp); \ |
67 | } while(0) | 67 | } while(0) |
diff --git a/include/asm-blackfin/system.h b/include/asm-blackfin/system.h index b5bf6e7cb5e8..5e5f1a0566c0 100644 --- a/include/asm-blackfin/system.h +++ b/include/asm-blackfin/system.h | |||
@@ -239,9 +239,9 @@ asmlinkage struct task_struct *resume(struct task_struct *prev, struct task_stru | |||
239 | 239 | ||
240 | #define switch_to(prev,next,last) \ | 240 | #define switch_to(prev,next,last) \ |
241 | do { \ | 241 | do { \ |
242 | memcpy (&prev->thread_info->l1_task_info, L1_SCRATCH_TASK_INFO, \ | 242 | memcpy (&task_thread_info(prev)->l1_task_info, L1_SCRATCH_TASK_INFO, \ |
243 | sizeof *L1_SCRATCH_TASK_INFO); \ | 243 | sizeof *L1_SCRATCH_TASK_INFO); \ |
244 | memcpy (L1_SCRATCH_TASK_INFO, &next->thread_info->l1_task_info, \ | 244 | memcpy (L1_SCRATCH_TASK_INFO, &task_thread_info(next)->l1_task_info, \ |
245 | sizeof *L1_SCRATCH_TASK_INFO); \ | 245 | sizeof *L1_SCRATCH_TASK_INFO); \ |
246 | (last) = resume (prev, next); \ | 246 | (last) = resume (prev, next); \ |
247 | } while (0) | 247 | } while (0) |
diff --git a/include/asm-m68k/thread_info.h b/include/asm-m68k/thread_info.h index c4d622a57dfb..d635a3752488 100644 --- a/include/asm-m68k/thread_info.h +++ b/include/asm-m68k/thread_info.h | |||
@@ -37,17 +37,17 @@ struct thread_info { | |||
37 | #define init_stack (init_thread_union.stack) | 37 | #define init_stack (init_thread_union.stack) |
38 | 38 | ||
39 | #define task_thread_info(tsk) (&(tsk)->thread.info) | 39 | #define task_thread_info(tsk) (&(tsk)->thread.info) |
40 | #define task_stack_page(tsk) ((void *)(tsk)->thread_info) | 40 | #define task_stack_page(tsk) ((tsk)->stack) |
41 | #define current_thread_info() task_thread_info(current) | 41 | #define current_thread_info() task_thread_info(current) |
42 | 42 | ||
43 | #define __HAVE_THREAD_FUNCTIONS | 43 | #define __HAVE_THREAD_FUNCTIONS |
44 | 44 | ||
45 | #define setup_thread_stack(p, org) ({ \ | 45 | #define setup_thread_stack(p, org) ({ \ |
46 | *(struct task_struct **)(p)->thread_info = (p); \ | 46 | *(struct task_struct **)(p)->stack = (p); \ |
47 | task_thread_info(p)->task = (p); \ | 47 | task_thread_info(p)->task = (p); \ |
48 | }) | 48 | }) |
49 | 49 | ||
50 | #define end_of_stack(p) ((unsigned long *)(p)->thread_info + 1) | 50 | #define end_of_stack(p) ((unsigned long *)(p)->stack + 1) |
51 | 51 | ||
52 | /* entry.S relies on these definitions! | 52 | /* entry.S relies on these definitions! |
53 | * bits 0-7 are tested at every exception exit | 53 | * bits 0-7 are tested at every exception exit |
diff --git a/include/asm-x86_64/system.h b/include/asm-x86_64/system.h index b7b8021e8c43..ead9f9a56234 100644 --- a/include/asm-x86_64/system.h +++ b/include/asm-x86_64/system.h | |||
@@ -39,7 +39,7 @@ | |||
39 | [threadrsp] "i" (offsetof(struct task_struct, thread.rsp)), \ | 39 | [threadrsp] "i" (offsetof(struct task_struct, thread.rsp)), \ |
40 | [ti_flags] "i" (offsetof(struct thread_info, flags)),\ | 40 | [ti_flags] "i" (offsetof(struct thread_info, flags)),\ |
41 | [tif_fork] "i" (TIF_FORK), \ | 41 | [tif_fork] "i" (TIF_FORK), \ |
42 | [thread_info] "i" (offsetof(struct task_struct, thread_info)), \ | 42 | [thread_info] "i" (offsetof(struct task_struct, stack)), \ |
43 | [pda_pcurrent] "i" (offsetof(struct x8664_pda, pcurrent)) \ | 43 | [pda_pcurrent] "i" (offsetof(struct x8664_pda, pcurrent)) \ |
44 | : "memory", "cc" __EXTRA_CLOBBER) | 44 | : "memory", "cc" __EXTRA_CLOBBER) |
45 | 45 | ||
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index 795102309bf1..45170b2fa253 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h | |||
@@ -95,7 +95,7 @@ extern struct group_info init_groups; | |||
95 | #define INIT_TASK(tsk) \ | 95 | #define INIT_TASK(tsk) \ |
96 | { \ | 96 | { \ |
97 | .state = 0, \ | 97 | .state = 0, \ |
98 | .thread_info = &init_thread_info, \ | 98 | .stack = &init_thread_info, \ |
99 | .usage = ATOMIC_INIT(2), \ | 99 | .usage = ATOMIC_INIT(2), \ |
100 | .flags = 0, \ | 100 | .flags = 0, \ |
101 | .lock_depth = -1, \ | 101 | .lock_depth = -1, \ |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 28000b1658f9..17b72d88c4cb 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -817,7 +817,7 @@ struct prio_array; | |||
817 | 817 | ||
818 | struct task_struct { | 818 | struct task_struct { |
819 | volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ | 819 | volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ |
820 | struct thread_info *thread_info; | 820 | void *stack; |
821 | atomic_t usage; | 821 | atomic_t usage; |
822 | unsigned int flags; /* per process flags, defined below */ | 822 | unsigned int flags; /* per process flags, defined below */ |
823 | unsigned int ptrace; | 823 | unsigned int ptrace; |
@@ -1513,8 +1513,8 @@ static inline void unlock_task_sighand(struct task_struct *tsk, | |||
1513 | 1513 | ||
1514 | #ifndef __HAVE_THREAD_FUNCTIONS | 1514 | #ifndef __HAVE_THREAD_FUNCTIONS |
1515 | 1515 | ||
1516 | #define task_thread_info(task) (task)->thread_info | 1516 | #define task_thread_info(task) ((struct thread_info *)(task)->stack) |
1517 | #define task_stack_page(task) ((void*)((task)->thread_info)) | 1517 | #define task_stack_page(task) ((task)->stack) |
1518 | 1518 | ||
1519 | static inline void setup_thread_stack(struct task_struct *p, struct task_struct *org) | 1519 | static inline void setup_thread_stack(struct task_struct *p, struct task_struct *org) |
1520 | { | 1520 | { |
@@ -1524,7 +1524,7 @@ static inline void setup_thread_stack(struct task_struct *p, struct task_struct | |||
1524 | 1524 | ||
1525 | static inline unsigned long *end_of_stack(struct task_struct *p) | 1525 | static inline unsigned long *end_of_stack(struct task_struct *p) |
1526 | { | 1526 | { |
1527 | return (unsigned long *)(p->thread_info + 1); | 1527 | return (unsigned long *)(task_thread_info(p) + 1); |
1528 | } | 1528 | } |
1529 | 1529 | ||
1530 | #endif | 1530 | #endif |