Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=824552574162ac00ae636fa41386b1072379ea4a
Commit:     824552574162ac00ae636fa41386b1072379ea4a
Parent:     ec4dd3eb35759f9fbeb5c1abb01403b2fde64cc9
Author:     Dave Hansen <[EMAIL PROTECTED]>
AuthorDate: Mon Feb 4 22:28:59 2008 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Tue Feb 5 09:44:16 2008 -0800

    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 <[EMAIL PROTECTED]>
    
    [EMAIL PROTECTED]: fix mips build]
    Signed-off-by: Dave Hansen <[EMAIL PROTECTED]>
    Signed-off-by: Ralf Baechle <[EMAIL PROTECTED]>
    Signed-off-by: Matt Mackall <[EMAIL PROTECTED]>
    Acked-by: David Rientjes <[EMAIL PROTECTED]>
    Cc: Dave Hansen <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 include/asm-ia64/processor.h    |    3 ++-
 include/asm-mips/processor.h    |    2 ++
 include/asm-parisc/processor.h  |    3 ++-
 include/asm-powerpc/processor.h |    3 ++-
 include/asm-s390/processor.h    |    3 ++-
 include/linux/sched.h           |    4 ++++
 6 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/include/asm-ia64/processor.h b/include/asm-ia64/processor.h
index be3b0ae..666385b 100644
--- a/include/asm-ia64/processor.h
+++ b/include/asm-ia64/processor.h
@@ -31,7 +31,8 @@
  * each (assuming 8KB page size), for a total of 8TB of user virtual
  * address space.
  */
-#define TASK_SIZE              (current->thread.task_size)
+#define TASK_SIZE_OF(tsk)      ((tsk)->thread.task_size)
+#define TASK_SIZE              TASK_SIZE_OF(current)
 
 /*
  * 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 83bc945..36f42de 100644
--- a/include/asm-mips/processor.h
+++ b/include/asm-mips/processor.h
@@ -65,6 +65,8 @@ extern unsigned int vced_count, vcei_count;
 #define TASK_UNMAPPED_BASE                                             \
        (test_thread_flag(TIF_32BIT_ADDR) ?                             \
                PAGE_ALIGN(TASK_SIZE32 / 3) : PAGE_ALIGN(TASK_SIZE / 3))
+#define TASK_SIZE_OF(tsk)                                              \
+       (test_tsk_thread_flag(tsk, TIF_32BIT_ADDR) ? TASK_SIZE32 : TASK_SIZE)
 #endif
 
 #define NUM_FPU_REGS   32
diff --git a/include/asm-parisc/processor.h b/include/asm-parisc/processor.h
index 6b294fb..3bb06e8 100644
--- a/include/asm-parisc/processor.h
+++ b/include/asm-parisc/processor.h
@@ -32,7 +32,8 @@
 #endif
 #define current_text_addr() ({ void *pc; current_ia(pc); pc; })
 
-#define TASK_SIZE               (current->thread.task_size)
+#define TASK_SIZE_OF(tsk)       ((tsk)->thread.task_size)
+#define TASK_SIZE              TASK_SIZE_OF(current)
 #define TASK_UNMAPPED_BASE      (current->thread.map_base)
 
 #define DEFAULT_TASK_SIZE32    (0xFFF00000UL)
diff --git a/include/asm-powerpc/processor.h b/include/asm-powerpc/processor.h
index dba7c94..1f4765d 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;
  */
 #define TASK_SIZE_USER32 (0x0000000100000000UL - (1*PAGE_SIZE))
 
-#define TASK_SIZE (test_thread_flag(TIF_32BIT) ? \
+#define TASK_SIZE_OF(tsk) (test_tsk_thread_flag(tsk, TIF_32BIT) ? \
                TASK_SIZE_USER32 : TASK_SIZE_USER64)
+#define TASK_SIZE        TASK_SIZE_OF(current)
 
 /* This decides where the kernel will search for a free chunk of vm
  * space during mmap's.
diff --git a/include/asm-s390/processor.h b/include/asm-s390/processor.h
index c86b982..4f74460 100644
--- a/include/asm-s390/processor.h
+++ b/include/asm-s390/processor.h
@@ -70,8 +70,9 @@ extern int get_cpu_capability(unsigned int *);
 
 #else /* __s390x__ */
 
-# define TASK_SIZE             (test_thread_flag(TIF_31BIT) ? \
+# define TASK_SIZE_OF(tsk)     (test_tsk_thread_flag(tsk, TIF_31BIT) ? \
                                        (0x80000000UL) : (0x40000000000UL))
+# define TASK_SIZE             TASK_SIZE_OF(current)
 # define TASK_UNMAPPED_BASE    (TASK_SIZE / 2)
 # define DEFAULT_TASK_SIZE     (0x40000000000UL)
 
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 483ea4e..c30d174 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -2087,6 +2087,10 @@ static inline void migration_init(void)
 }
 #endif
 
+#ifndef TASK_SIZE_OF
+#define TASK_SIZE_OF(tsk)      TASK_SIZE
+#endif
+
 #endif /* __KERNEL__ */
 
 #endif
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to