diff options
author | Jeff Dike <jdike@addtoit.com> | 2005-11-22 00:32:10 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-22 12:13:41 -0500 |
commit | aa1a64ee12ae130706f3fc0007841ce9b0ddf9c2 (patch) | |
tree | aa4dcbb8d1870209ae69dc85f241b8c1592ee4c1 | |
parent | 17d469715c6453e4994e6617e8f644bf10f38584 (diff) |
[PATCH] uml: eliminate use of libc PAGE_SIZE
On some systems, libc PAGE_SIZE calls getpagesize, which can't happen from a
stub. So, I use UM_KERN_PAGE_SIZE, which is less variable in its definition,
instead.
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | arch/um/kernel/skas/clone.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/arch/um/kernel/skas/clone.c b/arch/um/kernel/skas/clone.c index 39c0d7145d31..cb37ce9124a6 100644 --- a/arch/um/kernel/skas/clone.c +++ b/arch/um/kernel/skas/clone.c | |||
@@ -9,9 +9,13 @@ | |||
9 | #include "stub-data.h" | 9 | #include "stub-data.h" |
10 | #include "uml-config.h" | 10 | #include "uml-config.h" |
11 | #include "sysdep/stub.h" | 11 | #include "sysdep/stub.h" |
12 | #include "kern_constants.h" | ||
12 | 13 | ||
13 | /* This is in a separate file because it needs to be compiled with any | 14 | /* This is in a separate file because it needs to be compiled with any |
14 | * extraneous gcc flags (-pg, -fprofile-arcs, -ftest-coverage) disabled | 15 | * extraneous gcc flags (-pg, -fprofile-arcs, -ftest-coverage) disabled |
16 | * | ||
17 | * Use UM_KERN_PAGE_SIZE instead of PAGE_SIZE because that calls getpagesize | ||
18 | * on some systems. | ||
15 | */ | 19 | */ |
16 | 20 | ||
17 | #define STUB_DATA(field) (((struct stub_data *) UML_CONFIG_STUB_DATA)->field) | 21 | #define STUB_DATA(field) (((struct stub_data *) UML_CONFIG_STUB_DATA)->field) |
@@ -22,7 +26,7 @@ stub_clone_handler(void) | |||
22 | long err; | 26 | long err; |
23 | 27 | ||
24 | err = stub_syscall2(__NR_clone, CLONE_PARENT | CLONE_FILES | SIGCHLD, | 28 | err = stub_syscall2(__NR_clone, CLONE_PARENT | CLONE_FILES | SIGCHLD, |
25 | UML_CONFIG_STUB_DATA + PAGE_SIZE / 2 - | 29 | UML_CONFIG_STUB_DATA + UM_KERN_PAGE_SIZE / 2 - |
26 | sizeof(void *)); | 30 | sizeof(void *)); |
27 | if(err != 0) | 31 | if(err != 0) |
28 | goto out; | 32 | goto out; |
@@ -36,9 +40,10 @@ stub_clone_handler(void) | |||
36 | if(err) | 40 | if(err) |
37 | goto out; | 41 | goto out; |
38 | 42 | ||
39 | err = stub_syscall6(STUB_MMAP_NR, UML_CONFIG_STUB_DATA, PAGE_SIZE, | 43 | err = stub_syscall6(STUB_MMAP_NR, UML_CONFIG_STUB_DATA, |
40 | PROT_READ | PROT_WRITE, MAP_FIXED | MAP_SHARED, | 44 | UM_KERN_PAGE_SIZE, PROT_READ | PROT_WRITE, |
41 | STUB_DATA(fd), STUB_DATA(offset)); | 45 | MAP_FIXED | MAP_SHARED, STUB_DATA(fd), |
46 | STUB_DATA(offset)); | ||
42 | out: | 47 | out: |
43 | /* save current result. Parent: pid; child: retcode of mmap */ | 48 | /* save current result. Parent: pid; child: retcode of mmap */ |
44 | STUB_DATA(err) = err; | 49 | STUB_DATA(err) = err; |