aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Hansen <haveblue@us.ibm.com>2008-02-05 01:28:59 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-05 12:44:16 -0500
commit824552574162ac00ae636fa41386b1072379ea4a (patch)
tree85c595275c6007115ad002c56dbb7eb51ab67064
parentec4dd3eb35759f9fbeb5c1abb01403b2fde64cc9 (diff)
maps4: rework TASK_SIZE macros
The following replaces the earlier patches sent. It should address David Rientjes's comments, and has been compile tested on all the architectures that it touches, save for parisc. For the /proc/<pid>/pagemap code[1], we need to able to query how much virtual address space a particular task has. The trick is that we do it through /proc and can't use TASK_SIZE since it references "current" on some arches. The process opening the /proc file might be a 32-bit process opening a 64-bit process's pagemap file. x86_64 already has a TASK_SIZE_OF() macro: #define TASK_SIZE_OF(child) ((test_tsk_thread_flag(child, TIF_IA32)) ? IA32_PAGE_OFFSET : TASK_SIZE64) I'd like to have that for other architectures. So, add it for all the architectures that actually use "current" in their TASK_SIZE. For the others, just add a quick #define in sched.h to use plain old TASK_SIZE. 1. http://www.linuxworld.com/news/2007/042407-kernel.html - MIPS portion from Ralf Baechle <ralf@linux-mips.org> [akpm@linux-foundation.org: fix mips build] Signed-off-by: Dave Hansen <haveblue@us.ibm.com> Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Signed-off-by: Matt Mackall <mpm@selenic.com> Acked-by: David Rientjes <rientjes@google.com> Cc: Dave Hansen <haveblue@us.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--include/asm-ia64/processor.h3
-rw-r--r--include/asm-mips/processor.h2
-rw-r--r--include/asm-parisc/processor.h3
-rw-r--r--include/asm-powerpc/processor.h3
-rw-r--r--include/asm-s390/processor.h3
-rw-r--r--include/linux/sched.h4
6 files changed, 14 insertions, 4 deletions
diff --git a/include/asm-ia64/processor.h b/include/asm-ia64/processor.h
index be3b0ae43270..666385b68820 100644
--- a/include/asm-ia64/processor.h
+++ b/include/asm-ia64/processor.h
@@ -31,7 +31,8 @@
31 * each (assuming 8KB page size), for a total of 8TB of user virtual 31 * each (assuming 8KB page size), for a total of 8TB of user virtual
32 * address space. 32 * address space.
33 */ 33 */
34#define TASK_SIZE (current->thread.task_size) 34#define TASK_SIZE_OF(tsk) ((tsk)->thread.task_size)
35#define TASK_SIZE TASK_SIZE_OF(current)
35 36
36/* 37/*
37 * This decides where the kernel will search for a free chunk of vm 38 * This decides where the kernel will search for a free chunk of vm
diff --git a/include/asm-mips/processor.h b/include/asm-mips/processor.h
index 83bc94534084..36f42de59409 100644
--- a/include/asm-mips/processor.h
+++ b/include/asm-mips/processor.h
@@ -65,6 +65,8 @@ extern unsigned int vced_count, vcei_count;
65#define TASK_UNMAPPED_BASE \ 65#define TASK_UNMAPPED_BASE \
66 (test_thread_flag(TIF_32BIT_ADDR) ? \ 66 (test_thread_flag(TIF_32BIT_ADDR) ? \
67 PAGE_ALIGN(TASK_SIZE32 / 3) : PAGE_ALIGN(TASK_SIZE / 3)) 67 PAGE_ALIGN(TASK_SIZE32 / 3) : PAGE_ALIGN(TASK_SIZE / 3))
68#define TASK_SIZE_OF(tsk) \
69 (test_tsk_thread_flag(tsk, TIF_32BIT_ADDR) ? TASK_SIZE32 : TASK_SIZE)
68#endif 70#endif
69 71
70#define NUM_FPU_REGS 32 72#define NUM_FPU_REGS 32
diff --git a/include/asm-parisc/processor.h b/include/asm-parisc/processor.h
index 6b294fb07a23..3bb06e898fde 100644
--- a/include/asm-parisc/processor.h
+++ b/include/asm-parisc/processor.h
@@ -32,7 +32,8 @@
32#endif 32#endif
33#define current_text_addr() ({ void *pc; current_ia(pc); pc; }) 33#define current_text_addr() ({ void *pc; current_ia(pc); pc; })
34 34
35#define TASK_SIZE (current->thread.task_size) 35#define TASK_SIZE_OF(tsk) ((tsk)->thread.task_size)
36#define TASK_SIZE TASK_SIZE_OF(current)
36#define TASK_UNMAPPED_BASE (current->thread.map_base) 37#define TASK_UNMAPPED_BASE (current->thread.map_base)
37 38
38#define DEFAULT_TASK_SIZE32 (0xFFF00000UL) 39#define DEFAULT_TASK_SIZE32 (0xFFF00000UL)
diff --git a/include/asm-powerpc/processor.h b/include/asm-powerpc/processor.h
index dba7c948189d..1f4765d6546f 100644
--- a/include/asm-powerpc/processor.h
+++ b/include/asm-powerpc/processor.h
@@ -99,8 +99,9 @@ extern struct task_struct *last_task_used_spe;
99 */ 99 */
100#define TASK_SIZE_USER32 (0x0000000100000000UL - (1*PAGE_SIZE)) 100#define TASK_SIZE_USER32 (0x0000000100000000UL - (1*PAGE_SIZE))
101 101
102#define TASK_SIZE (test_thread_flag(TIF_32BIT) ? \ 102#define TASK_SIZE_OF(tsk) (test_tsk_thread_flag(tsk, TIF_32BIT) ? \
103 TASK_SIZE_USER32 : TASK_SIZE_USER64) 103 TASK_SIZE_USER32 : TASK_SIZE_USER64)
104#define TASK_SIZE TASK_SIZE_OF(current)
104 105
105/* This decides where the kernel will search for a free chunk of vm 106/* This decides where the kernel will search for a free chunk of vm
106 * space during mmap's. 107 * space during mmap's.
diff --git a/include/asm-s390/processor.h b/include/asm-s390/processor.h
index c86b982aef5a..4f744609cd11 100644
--- a/include/asm-s390/processor.h
+++ b/include/asm-s390/processor.h
@@ -70,8 +70,9 @@ extern int get_cpu_capability(unsigned int *);
70 70
71#else /* __s390x__ */ 71#else /* __s390x__ */
72 72
73# define TASK_SIZE (test_thread_flag(TIF_31BIT) ? \ 73# define TASK_SIZE_OF(tsk) (test_tsk_thread_flag(tsk, TIF_31BIT) ? \
74 (0x80000000UL) : (0x40000000000UL)) 74 (0x80000000UL) : (0x40000000000UL))
75# define TASK_SIZE TASK_SIZE_OF(current)
75# define TASK_UNMAPPED_BASE (TASK_SIZE / 2) 76# define TASK_UNMAPPED_BASE (TASK_SIZE / 2)
76# define DEFAULT_TASK_SIZE (0x40000000000UL) 77# define DEFAULT_TASK_SIZE (0x40000000000UL)
77 78
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 483ea4e1accf..c30d174a02fa 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -2087,6 +2087,10 @@ static inline void migration_init(void)
2087} 2087}
2088#endif 2088#endif
2089 2089
2090#ifndef TASK_SIZE_OF
2091#define TASK_SIZE_OF(tsk) TASK_SIZE
2092#endif
2093
2090#endif /* __KERNEL__ */ 2094#endif /* __KERNEL__ */
2091 2095
2092#endif 2096#endif