On Tue, Jun 12, 2007 at 03:06:28PM +0100, Urs Rau wrote:
> arch/um/os-Linux/start_up.c:156: error: âPAGE_SIZEâ undeclared (first
> use in this function)
> make[1]: *** [arch/um/os-Linux/start_up.o] Error 1
> make: *** [arch/um/os-Linux] Error 2

What's the host distro?

I thought I had a patch for this (in case removing PAGE_SIZE from
asm/page.h became a fashion), but I can't find it.

So, I redid it.  See below.

                                Jeff

-- 
Work email - jdike at linux dot intel dot com


Distros seem to be removing PAGE_SIZE from asm/page.h.  So, the libc
side of UML should stop using it.

I replace it with UM_KERN_PAGE_SIZE, which is defined to be the same
as PAGE_SIZE on the kernel side of the house.  I could also use
getpagesize(), but it's more important that UML have the same value of
PAGE_SIZE everywhere.  It's conceivable that it could be built with a
larger PAGE_SIZE, and use of getpagesize() would break that badly.

Signed-off-by: Jeff Dike <[EMAIL PROTECTED]>
--
 arch/um/include/common-offsets.h |    1 +
 arch/um/os-Linux/main.c          |    4 +++-
 arch/um/os-Linux/skas/mem.c      |   13 +++++++------
 arch/um/os-Linux/skas/process.c  |   13 +++++++------
 arch/um/os-Linux/start_up.c      |    7 ++++---
 5 files changed, 22 insertions(+), 16 deletions(-)

Index: linux-2.6.21-mm/arch/um/os-Linux/main.c
===================================================================
--- linux-2.6.21-mm.orig/arch/um/os-Linux/main.c        2007-06-06 
09:28:13.000000000 -0400
+++ linux-2.6.21-mm/arch/um/os-Linux/main.c     2007-06-12 11:33:37.000000000 
-0400
@@ -24,6 +24,7 @@
 #include "uml-config.h"
 #include "os.h"
 #include "um_malloc.h"
+#include "kern_constants.h"
 
 /* Set in main, unchanged thereafter */
 char *linux_prog;
@@ -232,7 +233,8 @@ void *__wrap_malloc(int size)
 
        if(!CAN_KMALLOC())
                return __real_malloc(size);
-       else if(size <= PAGE_SIZE) /* finding contiguos pages can be hard*/
+       else if(size <= UM_KERN_PAGE_SIZE)
+               /* finding contiguous pages can be hard*/
                ret = um_kmalloc(size);
        else ret = um_vmalloc(size);
 
Index: linux-2.6.21-mm/arch/um/os-Linux/skas/mem.c
===================================================================
--- linux-2.6.21-mm.orig/arch/um/os-Linux/skas/mem.c    2007-06-06 
09:28:13.000000000 -0400
+++ linux-2.6.21-mm/arch/um/os-Linux/skas/mem.c 2007-06-12 11:34:37.000000000 
-0400
@@ -25,6 +25,7 @@
 #include "sysdep/ptrace.h"
 #include "sysdep/stub.h"
 #include "init.h"
+#include "kern_constants.h"
 
 extern unsigned long batch_syscall_stub, __syscall_stub_start;
 
@@ -149,8 +150,8 @@ long run_syscall_stub(struct mm_id * mm_
        *stack = 0;
        multi_op_count++;
 
-       if(!done && ((((unsigned long) stack) & ~PAGE_MASK) <
-                    PAGE_SIZE - 10 * sizeof(long))){
+       if(!done && ((((unsigned long) stack) & ~UM_KERN_PAGE_MASK) <
+                    UM_KERN_PAGE_SIZE - 10 * sizeof(long))){
                *addr = stack;
                return 0;
        }
@@ -168,8 +169,8 @@ long syscall_stub_data(struct mm_id * mm
        /* If *addr still is uninitialized, it *must* contain NULL.
         * Thus in this case do_syscall_stub correctly won't be called.
         */
-       if((((unsigned long) *addr) & ~PAGE_MASK) >=
-          PAGE_SIZE - (10 + data_count) * sizeof(long)) {
+       if((((unsigned long) *addr) & ~UM_KERN_PAGE_MASK) >=
+          UM_KERN_PAGE_SIZE - (10 + data_count) * sizeof(long)) {
                ret = do_syscall_stub(mm_idp, addr);
                /* in case of error, don't overwrite data on stack */
                if(ret)
@@ -183,8 +184,8 @@ long syscall_stub_data(struct mm_id * mm
 
        memcpy(stack + 1, data, data_count * sizeof(long));
 
-       *stub_addr = (void *)(((unsigned long)(stack + 1) & ~PAGE_MASK) +
-                             UML_CONFIG_STUB_DATA);
+       *stub_addr = (void *)(((unsigned long)(stack + 1) &
+                              ~UM_KERN_PAGE_MASK) + UML_CONFIG_STUB_DATA);
 
        return 0;
 }
Index: linux-2.6.21-mm/arch/um/os-Linux/skas/process.c
===================================================================
--- linux-2.6.21-mm.orig/arch/um/os-Linux/skas/process.c        2007-06-06 
09:28:13.000000000 -0400
+++ linux-2.6.21-mm/arch/um/os-Linux/skas/process.c     2007-06-12 
11:31:14.000000000 -0400
@@ -252,11 +252,12 @@ int start_userspace(unsigned long stub_s
        unsigned long sp;
        int pid, status, n, flags;
 
-       stack = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC,
+       stack = mmap(NULL, UM_KERN_PAGE_SIZE,
+                    PROT_READ | PROT_WRITE | PROT_EXEC,
                     MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
        if(stack == MAP_FAILED)
                panic("start_userspace : mmap failed, errno = %d", errno);
-       sp = (unsigned long) stack + PAGE_SIZE - sizeof(void *);
+       sp = (unsigned long) stack + UM_KERN_PAGE_SIZE - sizeof(void *);
 
        flags = CLONE_FILES | SIGCHLD;
        if(proc_mm) flags |= CLONE_VM;
@@ -279,7 +280,7 @@ int start_userspace(unsigned long stub_s
                panic("start_userspace : PTRACE_OLDSETOPTIONS failed, 
errno=%d\n",
                      errno);
 
-       if(munmap(stack, PAGE_SIZE) < 0)
+       if(munmap(stack, UM_KERN_PAGE_SIZE) < 0)
                panic("start_userspace : munmap failed, errno = %d\n", errno);
 
        return(pid);
@@ -365,7 +366,7 @@ static int __init init_thread_regs(void)
        thread_regs[REGS_IP_INDEX] = UML_CONFIG_STUB_CODE +
                                (unsigned long) stub_clone_handler -
                                (unsigned long) &__syscall_stub_start;
-       thread_regs[REGS_SP_INDEX] = UML_CONFIG_STUB_DATA + PAGE_SIZE -
+       thread_regs[REGS_SP_INDEX] = UML_CONFIG_STUB_DATA + UM_KERN_PAGE_SIZE -
                sizeof(void *);
 #ifdef __SIGNAL_FRAMESIZE
        thread_regs[REGS_SP_INDEX] -= __SIGNAL_FRAMESIZE;
@@ -453,7 +454,7 @@ void map_stub_pages(int fd, unsigned lon
                                      .u         =
                                      { .mmap    =
                                        { .addr    = code,
-                                         .len     = PAGE_SIZE,
+                                         .len     = UM_KERN_PAGE_SIZE,
                                          .prot    = PROT_EXEC,
                                          .flags   = MAP_FIXED | MAP_PRIVATE,
                                          .fd      = code_fd,
@@ -476,7 +477,7 @@ void map_stub_pages(int fd, unsigned lon
                                  .u         =
                                  { .mmap    =
                                    { .addr    = data,
-                                     .len     = PAGE_SIZE,
+                                     .len     = UM_KERN_PAGE_SIZE,
                                      .prot    = PROT_READ | PROT_WRITE,
                                      .flags   = MAP_FIXED | MAP_SHARED,
                                      .fd      = map_fd,
Index: linux-2.6.21-mm/arch/um/os-Linux/start_up.c
===================================================================
--- linux-2.6.21-mm.orig/arch/um/os-Linux/start_up.c    2007-06-06 
09:28:13.000000000 -0400
+++ linux-2.6.21-mm/arch/um/os-Linux/start_up.c 2007-06-12 11:32:18.000000000 
-0400
@@ -107,11 +107,12 @@ static int start_ptraced_child(void **st
        unsigned long sp;
        int pid, n, status;
 
-       stack = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC,
+       stack = mmap(NULL, UM_KERN_PAGE_SIZE,
+                    PROT_READ | PROT_WRITE | PROT_EXEC,
                     MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
        if(stack == MAP_FAILED)
                fatal_perror("check_ptrace : mmap failed");
-       sp = (unsigned long) stack + PAGE_SIZE - sizeof(void *);
+       sp = (unsigned long) stack + UM_KERN_PAGE_SIZE - sizeof(void *);
        pid = clone(ptrace_child, (void *) sp, SIGCHLD, NULL);
        if(pid < 0)
                fatal_perror("start_ptraced_child : clone failed");
@@ -153,7 +154,7 @@ static int stop_ptraced_child(int pid, v
                ret = -1;
        }
 
-       if(munmap(stack, PAGE_SIZE) < 0)
+       if(munmap(stack, UM_KERN_PAGE_SIZE) < 0)
                fatal_perror("check_ptrace : munmap failed");
        return ret;
 }
Index: linux-2.6.21-mm/arch/um/include/common-offsets.h
===================================================================
--- linux-2.6.21-mm.orig/arch/um/include/common-offsets.h       2007-06-06 
09:28:13.000000000 -0400
+++ linux-2.6.21-mm/arch/um/include/common-offsets.h    2007-06-12 
11:35:22.000000000 -0400
@@ -9,6 +9,7 @@ OFFSET(HOST_TASK_REGS, task_struct, thre
 OFFSET(HOST_TASK_PID, task_struct, pid);
 
 DEFINE(UM_KERN_PAGE_SIZE, PAGE_SIZE);
+DEFINE(UM_KERN_PAGE_MASK, PAGE_MASK);
 DEFINE(UM_NSEC_PER_SEC, NSEC_PER_SEC);
 
 DEFINE_STR(UM_KERN_EMERG, KERN_EMERG);

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
User-mode-linux-user mailing list
User-mode-linux-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user

Reply via email to