diff options
author | Jeff Dike <jdike@addtoit.com> | 2005-11-07 03:58:51 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-07 10:53:31 -0500 |
commit | ff5c6ff54215fe284e515032878111de5d8a5ce1 (patch) | |
tree | ecf5e2eaacc9f45f5227b50d8bfaaf82e15b9647 | |
parent | 52c653b3bed323df9006c06cdfb4548ec44b3109 (diff) |
[PATCH] uml: separate libc-dependent helper code
The serial UML OS-abstraction layer patch (um/kernel dir).
This moves all systemcalls from helper.c file under os-Linux dir
Signed-off-by: Gennady Sharapov <Gennady.V.Sharapov@intel.com>
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Cc: Paolo Giarrusso <blaisorblade@yahoo.it>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | arch/um/drivers/chan_user.c | 1 | ||||
-rw-r--r-- | arch/um/drivers/harddog_kern.c | 1 | ||||
-rw-r--r-- | arch/um/drivers/harddog_user.c | 1 | ||||
-rw-r--r-- | arch/um/drivers/net_user.c | 1 | ||||
-rw-r--r-- | arch/um/drivers/port_user.c | 1 | ||||
-rw-r--r-- | arch/um/drivers/slip_user.c | 1 | ||||
-rw-r--r-- | arch/um/drivers/slirp_user.c | 1 | ||||
-rw-r--r-- | arch/um/drivers/xterm.c | 1 | ||||
-rw-r--r-- | arch/um/include/helper.h | 27 | ||||
-rw-r--r-- | arch/um/include/os.h | 8 | ||||
-rw-r--r-- | arch/um/kernel/Makefile | 5 | ||||
-rw-r--r-- | arch/um/kernel/ksyms.c | 1 | ||||
-rw-r--r-- | arch/um/kernel/sigio_user.c | 1 | ||||
-rw-r--r-- | arch/um/kernel/user_util.c | 1 | ||||
-rw-r--r-- | arch/um/os-Linux/Makefile | 7 | ||||
-rw-r--r-- | arch/um/os-Linux/aio.c | 1 | ||||
-rw-r--r-- | arch/um/os-Linux/drivers/ethertap_user.c | 1 | ||||
-rw-r--r-- | arch/um/os-Linux/drivers/tuntap_user.c | 1 | ||||
-rw-r--r-- | arch/um/os-Linux/helper.c (renamed from arch/um/kernel/helper.c) | 18 |
19 files changed, 23 insertions, 56 deletions
diff --git a/arch/um/drivers/chan_user.c b/arch/um/drivers/chan_user.c index de3bce71aeb3..1c55d5802489 100644 --- a/arch/um/drivers/chan_user.c +++ b/arch/um/drivers/chan_user.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include "user_util.h" | 16 | #include "user_util.h" |
17 | #include "chan_user.h" | 17 | #include "chan_user.h" |
18 | #include "user.h" | 18 | #include "user.h" |
19 | #include "helper.h" | ||
20 | #include "os.h" | 19 | #include "os.h" |
21 | #include "choose-mode.h" | 20 | #include "choose-mode.h" |
22 | #include "mode.h" | 21 | #include "mode.h" |
diff --git a/arch/um/drivers/harddog_kern.c b/arch/um/drivers/harddog_kern.c index 147ec19f6bb9..49acb2badf32 100644 --- a/arch/um/drivers/harddog_kern.c +++ b/arch/um/drivers/harddog_kern.c | |||
@@ -46,7 +46,6 @@ | |||
46 | #include <linux/smp_lock.h> | 46 | #include <linux/smp_lock.h> |
47 | #include <linux/init.h> | 47 | #include <linux/init.h> |
48 | #include <asm/uaccess.h> | 48 | #include <asm/uaccess.h> |
49 | #include "helper.h" | ||
50 | #include "mconsole.h" | 49 | #include "mconsole.h" |
51 | 50 | ||
52 | MODULE_LICENSE("GPL"); | 51 | MODULE_LICENSE("GPL"); |
diff --git a/arch/um/drivers/harddog_user.c b/arch/um/drivers/harddog_user.c index d934181b8d4c..def013b5a3c7 100644 --- a/arch/um/drivers/harddog_user.c +++ b/arch/um/drivers/harddog_user.c | |||
@@ -8,7 +8,6 @@ | |||
8 | #include <errno.h> | 8 | #include <errno.h> |
9 | #include "user_util.h" | 9 | #include "user_util.h" |
10 | #include "user.h" | 10 | #include "user.h" |
11 | #include "helper.h" | ||
12 | #include "mconsole.h" | 11 | #include "mconsole.h" |
13 | #include "os.h" | 12 | #include "os.h" |
14 | #include "choose-mode.h" | 13 | #include "choose-mode.h" |
diff --git a/arch/um/drivers/net_user.c b/arch/um/drivers/net_user.c index 3730d4f12713..098fa65981ab 100644 --- a/arch/um/drivers/net_user.c +++ b/arch/um/drivers/net_user.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include "user_util.h" | 16 | #include "user_util.h" |
17 | #include "kern_util.h" | 17 | #include "kern_util.h" |
18 | #include "net_user.h" | 18 | #include "net_user.h" |
19 | #include "helper.h" | ||
20 | #include "os.h" | 19 | #include "os.h" |
21 | 20 | ||
22 | int tap_open_common(void *dev, char *gate_addr) | 21 | int tap_open_common(void *dev, char *gate_addr) |
diff --git a/arch/um/drivers/port_user.c b/arch/um/drivers/port_user.c index 14dd2002d2da..ed4a1a6c5d83 100644 --- a/arch/um/drivers/port_user.c +++ b/arch/um/drivers/port_user.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include "user.h" | 18 | #include "user.h" |
19 | #include "chan_user.h" | 19 | #include "chan_user.h" |
20 | #include "port.h" | 20 | #include "port.h" |
21 | #include "helper.h" | ||
22 | #include "os.h" | 21 | #include "os.h" |
23 | 22 | ||
24 | struct port_chan { | 23 | struct port_chan { |
diff --git a/arch/um/drivers/slip_user.c b/arch/um/drivers/slip_user.c index 71af444e591f..89fbec185cc1 100644 --- a/arch/um/drivers/slip_user.c +++ b/arch/um/drivers/slip_user.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include "net_user.h" | 14 | #include "net_user.h" |
15 | #include "slip.h" | 15 | #include "slip.h" |
16 | #include "slip_common.h" | 16 | #include "slip_common.h" |
17 | #include "helper.h" | ||
18 | #include "os.h" | 17 | #include "os.h" |
19 | 18 | ||
20 | void slip_user_init(void *data, void *dev) | 19 | void slip_user_init(void *data, void *dev) |
diff --git a/arch/um/drivers/slirp_user.c b/arch/um/drivers/slirp_user.c index 8d91f663d82c..b94c66114bc8 100644 --- a/arch/um/drivers/slirp_user.c +++ b/arch/um/drivers/slirp_user.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include "net_user.h" | 13 | #include "net_user.h" |
14 | #include "slirp.h" | 14 | #include "slirp.h" |
15 | #include "slip_common.h" | 15 | #include "slip_common.h" |
16 | #include "helper.h" | ||
17 | #include "os.h" | 16 | #include "os.h" |
18 | 17 | ||
19 | void slirp_user_init(void *data, void *dev) | 18 | void slirp_user_init(void *data, void *dev) |
diff --git a/arch/um/drivers/xterm.c b/arch/um/drivers/xterm.c index 90e0e5ff451e..b530f1a6540d 100644 --- a/arch/um/drivers/xterm.c +++ b/arch/um/drivers/xterm.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <sys/socket.h> | 14 | #include <sys/socket.h> |
15 | #include "kern_util.h" | 15 | #include "kern_util.h" |
16 | #include "chan_user.h" | 16 | #include "chan_user.h" |
17 | #include "helper.h" | ||
18 | #include "user_util.h" | 17 | #include "user_util.h" |
19 | #include "user.h" | 18 | #include "user.h" |
20 | #include "os.h" | 19 | #include "os.h" |
diff --git a/arch/um/include/helper.h b/arch/um/include/helper.h deleted file mode 100644 index 162ac31192fd..000000000000 --- a/arch/um/include/helper.h +++ /dev/null | |||
@@ -1,27 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) | ||
3 | * Licensed under the GPL | ||
4 | */ | ||
5 | |||
6 | #ifndef __HELPER_H__ | ||
7 | #define __HELPER_H__ | ||
8 | |||
9 | extern int run_helper(void (*pre_exec)(void *), void *pre_data, char **argv, | ||
10 | unsigned long *stack_out); | ||
11 | extern int run_helper_thread(int (*proc)(void *), void *arg, | ||
12 | unsigned int flags, unsigned long *stack_out, | ||
13 | int stack_order); | ||
14 | extern int helper_wait(int pid); | ||
15 | |||
16 | #endif | ||
17 | |||
18 | /* | ||
19 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
20 | * Emacs will notice this stuff at the end of the file and automatically | ||
21 | * adjust the settings for this buffer only. This must remain at the end | ||
22 | * of the file. | ||
23 | * --------------------------------------------------------------------------- | ||
24 | * Local variables: | ||
25 | * c-file-style: "linux" | ||
26 | * End: | ||
27 | */ | ||
diff --git a/arch/um/include/os.h b/arch/um/include/os.h index b9f53519bbe6..112d7288f0cf 100644 --- a/arch/um/include/os.h +++ b/arch/um/include/os.h | |||
@@ -205,6 +205,14 @@ extern unsigned long __do_user_copy(void *to, const void *from, int n, | |||
205 | void (*op)(void *to, const void *from, | 205 | void (*op)(void *to, const void *from, |
206 | int n), int *faulted_out); | 206 | int n), int *faulted_out); |
207 | 207 | ||
208 | /* helper.c */ | ||
209 | extern int run_helper(void (*pre_exec)(void *), void *pre_data, char **argv, | ||
210 | unsigned long *stack_out); | ||
211 | extern int run_helper_thread(int (*proc)(void *), void *arg, | ||
212 | unsigned int flags, unsigned long *stack_out, | ||
213 | int stack_order); | ||
214 | extern int helper_wait(int pid); | ||
215 | |||
208 | #endif | 216 | #endif |
209 | 217 | ||
210 | /* | 218 | /* |
diff --git a/arch/um/kernel/Makefile b/arch/um/kernel/Makefile index f9858583863a..3de9d21e36bf 100644 --- a/arch/um/kernel/Makefile +++ b/arch/um/kernel/Makefile | |||
@@ -7,7 +7,7 @@ extra-y := vmlinux.lds | |||
7 | clean-files := | 7 | clean-files := |
8 | 8 | ||
9 | obj-y = config.o exec_kern.o exitcode.o \ | 9 | obj-y = config.o exec_kern.o exitcode.o \ |
10 | helper.o init_task.o irq.o irq_user.o ksyms.o mem.o physmem.o \ | 10 | init_task.o irq.o irq_user.o ksyms.o mem.o physmem.o \ |
11 | process_kern.o ptrace.o reboot.o resource.o sigio_user.o sigio_kern.o \ | 11 | process_kern.o ptrace.o reboot.o resource.o sigio_user.o sigio_kern.o \ |
12 | signal_kern.o signal_user.o smp.o syscall_kern.o sysrq.o time.o \ | 12 | signal_kern.o signal_user.o smp.o syscall_kern.o sysrq.o time.o \ |
13 | time_kern.o tlb.o trap_kern.o trap_user.o uaccess.o um_arch.o \ | 13 | time_kern.o tlb.o trap_kern.o trap_user.o uaccess.o um_arch.o \ |
@@ -24,8 +24,7 @@ obj-$(CONFIG_MODE_SKAS) += skas/ | |||
24 | 24 | ||
25 | user-objs-$(CONFIG_TTY_LOG) += tty_log.o | 25 | user-objs-$(CONFIG_TTY_LOG) += tty_log.o |
26 | 26 | ||
27 | USER_OBJS := $(user-objs-y) config.o helper.o time.o tty_log.o umid.o \ | 27 | USER_OBJS := $(user-objs-y) config.o time.o tty_log.o umid.o user_util.o |
28 | user_util.o | ||
29 | 28 | ||
30 | include arch/um/scripts/Makefile.rules | 29 | include arch/um/scripts/Makefile.rules |
31 | 30 | ||
diff --git a/arch/um/kernel/ksyms.c b/arch/um/kernel/ksyms.c index a97a72e516aa..7713e7a6f476 100644 --- a/arch/um/kernel/ksyms.c +++ b/arch/um/kernel/ksyms.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include "user_util.h" | 20 | #include "user_util.h" |
21 | #include "mem_user.h" | 21 | #include "mem_user.h" |
22 | #include "os.h" | 22 | #include "os.h" |
23 | #include "helper.h" | ||
24 | 23 | ||
25 | EXPORT_SYMBOL(stop); | 24 | EXPORT_SYMBOL(stop); |
26 | EXPORT_SYMBOL(uml_physmem); | 25 | EXPORT_SYMBOL(uml_physmem); |
diff --git a/arch/um/kernel/sigio_user.c b/arch/um/kernel/sigio_user.c index a52751108aa1..3fbfd956bfe7 100644 --- a/arch/um/kernel/sigio_user.c +++ b/arch/um/kernel/sigio_user.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include "kern_util.h" | 18 | #include "kern_util.h" |
19 | #include "user_util.h" | 19 | #include "user_util.h" |
20 | #include "sigio.h" | 20 | #include "sigio.h" |
21 | #include "helper.h" | ||
22 | #include "os.h" | 21 | #include "os.h" |
23 | 22 | ||
24 | /* Changed during early boot */ | 23 | /* Changed during early boot */ |
diff --git a/arch/um/kernel/user_util.c b/arch/um/kernel/user_util.c index 41d17c71511c..4c231161f257 100644 --- a/arch/um/kernel/user_util.c +++ b/arch/um/kernel/user_util.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include "user.h" | 27 | #include "user.h" |
28 | #include "mem_user.h" | 28 | #include "mem_user.h" |
29 | #include "init.h" | 29 | #include "init.h" |
30 | #include "helper.h" | ||
31 | #include "ptrace_user.h" | 30 | #include "ptrace_user.h" |
32 | #include "uml-config.h" | 31 | #include "uml-config.h" |
33 | 32 | ||
diff --git a/arch/um/os-Linux/Makefile b/arch/um/os-Linux/Makefile index 0b761a08f0df..b83ac8e21c35 100644 --- a/arch/um/os-Linux/Makefile +++ b/arch/um/os-Linux/Makefile | |||
@@ -3,10 +3,11 @@ | |||
3 | # Licensed under the GPL | 3 | # Licensed under the GPL |
4 | # | 4 | # |
5 | 5 | ||
6 | obj-y = aio.o elf_aux.o file.o main.o mem.o process.o signal.o start_up.o \ | 6 | obj-y = aio.o elf_aux.o file.o helper.o main.o mem.o process.o signal.o \ |
7 | time.o tt.o tty.o uaccess.o user_syms.o drivers/ sys-$(SUBARCH)/ | 7 | start_up.o time.o tt.o tty.o uaccess.o user_syms.o drivers/ \ |
8 | sys-$(SUBARCH)/ | ||
8 | 9 | ||
9 | USER_OBJS := aio.o elf_aux.o file.o main.o mem.o process.o signal.o \ | 10 | USER_OBJS := aio.o elf_aux.o file.o helper.o main.o mem.o process.o signal.o \ |
10 | start_up.o time.o tt.o tty.o uaccess.o | 11 | start_up.o time.o tt.o tty.o uaccess.o |
11 | 12 | ||
12 | elf_aux.o: $(ARCH_DIR)/kernel-offsets.h | 13 | elf_aux.o: $(ARCH_DIR)/kernel-offsets.h |
diff --git a/arch/um/os-Linux/aio.c b/arch/um/os-Linux/aio.c index 41cfb0944201..ffa759addd3c 100644 --- a/arch/um/os-Linux/aio.c +++ b/arch/um/os-Linux/aio.c | |||
@@ -10,7 +10,6 @@ | |||
10 | #include <sched.h> | 10 | #include <sched.h> |
11 | #include <sys/syscall.h> | 11 | #include <sys/syscall.h> |
12 | #include "os.h" | 12 | #include "os.h" |
13 | #include "helper.h" | ||
14 | #include "aio.h" | 13 | #include "aio.h" |
15 | #include "init.h" | 14 | #include "init.h" |
16 | #include "user.h" | 15 | #include "user.h" |
diff --git a/arch/um/os-Linux/drivers/ethertap_user.c b/arch/um/os-Linux/drivers/ethertap_user.c index cd4d6544da71..901b85e8a1c6 100644 --- a/arch/um/os-Linux/drivers/ethertap_user.c +++ b/arch/um/os-Linux/drivers/ethertap_user.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include "user_util.h" | 19 | #include "user_util.h" |
20 | #include "net_user.h" | 20 | #include "net_user.h" |
21 | #include "etap.h" | 21 | #include "etap.h" |
22 | #include "helper.h" | ||
23 | #include "os.h" | 22 | #include "os.h" |
24 | 23 | ||
25 | #define MAX_PACKET ETH_MAX_PACKET | 24 | #define MAX_PACKET ETH_MAX_PACKET |
diff --git a/arch/um/os-Linux/drivers/tuntap_user.c b/arch/um/os-Linux/drivers/tuntap_user.c index 4ba9b17adf13..52945338b64d 100644 --- a/arch/um/os-Linux/drivers/tuntap_user.c +++ b/arch/um/os-Linux/drivers/tuntap_user.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include "kern_util.h" | 20 | #include "kern_util.h" |
21 | #include "user_util.h" | 21 | #include "user_util.h" |
22 | #include "user.h" | 22 | #include "user.h" |
23 | #include "helper.h" | ||
24 | #include "os.h" | 23 | #include "os.h" |
25 | 24 | ||
26 | #define MAX_PACKET ETH_MAX_PACKET | 25 | #define MAX_PACKET ETH_MAX_PACKET |
diff --git a/arch/um/kernel/helper.c b/arch/um/os-Linux/helper.c index 33fb0bd3b11a..36cc8475bcda 100644 --- a/arch/um/kernel/helper.c +++ b/arch/um/os-Linux/helper.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) | 2 | * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) |
3 | * Licensed under the GPL | 3 | * Licensed under the GPL |
4 | */ | 4 | */ |
@@ -13,7 +13,6 @@ | |||
13 | #include "user.h" | 13 | #include "user.h" |
14 | #include "kern_util.h" | 14 | #include "kern_util.h" |
15 | #include "user_util.h" | 15 | #include "user_util.h" |
16 | #include "helper.h" | ||
17 | #include "os.h" | 16 | #include "os.h" |
18 | 17 | ||
19 | struct helper_data { | 18 | struct helper_data { |
@@ -46,7 +45,7 @@ static int helper_child(void *arg) | |||
46 | errval = errno; | 45 | errval = errno; |
47 | printk("execvp of '%s' failed - errno = %d\n", argv[0], errno); | 46 | printk("execvp of '%s' failed - errno = %d\n", argv[0], errno); |
48 | os_write_file(data->fd, &errval, sizeof(errval)); | 47 | os_write_file(data->fd, &errval, sizeof(errval)); |
49 | os_kill_process(os_getpid(), 0); | 48 | kill(os_getpid(), SIGKILL); |
50 | return(0); | 49 | return(0); |
51 | } | 50 | } |
52 | 51 | ||
@@ -90,7 +89,7 @@ int run_helper(void (*pre_exec)(void *), void *pre_data, char **argv, | |||
90 | goto out_close; | 89 | goto out_close; |
91 | } | 90 | } |
92 | 91 | ||
93 | os_close_file(fds[1]); | 92 | close(fds[1]); |
94 | fds[1] = -1; | 93 | fds[1] = -1; |
95 | 94 | ||
96 | /*Read the errno value from the child.*/ | 95 | /*Read the errno value from the child.*/ |
@@ -98,7 +97,8 @@ int run_helper(void (*pre_exec)(void *), void *pre_data, char **argv, | |||
98 | if(n < 0){ | 97 | if(n < 0){ |
99 | printk("run_helper : read on pipe failed, ret = %d\n", -n); | 98 | printk("run_helper : read on pipe failed, ret = %d\n", -n); |
100 | ret = n; | 99 | ret = n; |
101 | os_kill_process(pid, 1); | 100 | kill(pid, SIGKILL); |
101 | CATCH_EINTR(waitpid(pid, NULL, 0)); | ||
102 | } | 102 | } |
103 | else if(n != 0){ | 103 | else if(n != 0){ |
104 | CATCH_EINTR(n = waitpid(pid, NULL, 0)); | 104 | CATCH_EINTR(n = waitpid(pid, NULL, 0)); |
@@ -109,8 +109,8 @@ int run_helper(void (*pre_exec)(void *), void *pre_data, char **argv, | |||
109 | 109 | ||
110 | out_close: | 110 | out_close: |
111 | if (fds[1] != -1) | 111 | if (fds[1] != -1) |
112 | os_close_file(fds[1]); | 112 | close(fds[1]); |
113 | os_close_file(fds[0]); | 113 | close(fds[0]); |
114 | out_free: | 114 | out_free: |
115 | if(stack_out == NULL) | 115 | if(stack_out == NULL) |
116 | free_stack(stack, 0); | 116 | free_stack(stack, 0); |
@@ -118,7 +118,7 @@ out_free: | |||
118 | return(ret); | 118 | return(ret); |
119 | } | 119 | } |
120 | 120 | ||
121 | int run_helper_thread(int (*proc)(void *), void *arg, unsigned int flags, | 121 | int run_helper_thread(int (*proc)(void *), void *arg, unsigned int flags, |
122 | unsigned long *stack_out, int stack_order) | 122 | unsigned long *stack_out, int stack_order) |
123 | { | 123 | { |
124 | unsigned long stack, sp; | 124 | unsigned long stack, sp; |
@@ -131,7 +131,7 @@ int run_helper_thread(int (*proc)(void *), void *arg, unsigned int flags, | |||
131 | pid = clone(proc, (void *) sp, flags | SIGCHLD, arg); | 131 | pid = clone(proc, (void *) sp, flags | SIGCHLD, arg); |
132 | if(pid < 0){ | 132 | if(pid < 0){ |
133 | err = -errno; | 133 | err = -errno; |
134 | printk("run_helper_thread : clone failed, errno = %d\n", | 134 | printk("run_helper_thread : clone failed, errno = %d\n", |
135 | errno); | 135 | errno); |
136 | return err; | 136 | return err; |
137 | } | 137 | } |