diff options
Diffstat (limited to 'arch/um')
-rw-r--r-- | arch/um/include/os.h | 5 | ||||
-rw-r--r-- | arch/um/include/sigio.h | 2 | ||||
-rw-r--r-- | arch/um/include/user_util.h | 1 | ||||
-rw-r--r-- | arch/um/kernel/Makefile | 2 | ||||
-rw-r--r-- | arch/um/os-Linux/Makefile | 9 | ||||
-rw-r--r-- | arch/um/os-Linux/sigio.c (renamed from arch/um/kernel/sigio_user.c) | 16 |
6 files changed, 19 insertions, 16 deletions
diff --git a/arch/um/include/os.h b/arch/um/include/os.h index 6d865d4eade0..53dee8d3cdcc 100644 --- a/arch/um/include/os.h +++ b/arch/um/include/os.h | |||
@@ -311,4 +311,9 @@ extern void os_set_pollfd(int i, int fd); | |||
311 | extern void os_set_ioignore(void); | 311 | extern void os_set_ioignore(void); |
312 | extern void init_irq_signals(int on_sigstack); | 312 | extern void init_irq_signals(int on_sigstack); |
313 | 313 | ||
314 | /* sigio.c */ | ||
315 | extern void write_sigio_workaround(void); | ||
316 | extern int add_sigio_fd(int fd, int read); | ||
317 | extern int ignore_sigio_fd(int fd); | ||
318 | |||
314 | #endif | 319 | #endif |
diff --git a/arch/um/include/sigio.h b/arch/um/include/sigio.h index 1432fcfb3212..fe99ea163c2e 100644 --- a/arch/um/include/sigio.h +++ b/arch/um/include/sigio.h | |||
@@ -8,8 +8,6 @@ | |||
8 | 8 | ||
9 | extern int write_sigio_irq(int fd); | 9 | extern int write_sigio_irq(int fd); |
10 | extern int register_sigio_fd(int fd); | 10 | extern int register_sigio_fd(int fd); |
11 | extern int add_sigio_fd(int fd, int read); | ||
12 | extern int ignore_sigio_fd(int fd); | ||
13 | extern void sigio_lock(void); | 11 | extern void sigio_lock(void); |
14 | extern void sigio_unlock(void); | 12 | extern void sigio_unlock(void); |
15 | 13 | ||
diff --git a/arch/um/include/user_util.h b/arch/um/include/user_util.h index a6f1f176cf84..992a7e1e0fca 100644 --- a/arch/um/include/user_util.h +++ b/arch/um/include/user_util.h | |||
@@ -58,7 +58,6 @@ extern int attach(int pid); | |||
58 | extern void kill_child_dead(int pid); | 58 | extern void kill_child_dead(int pid); |
59 | extern int cont(int pid); | 59 | extern int cont(int pid); |
60 | extern void check_sigio(void); | 60 | extern void check_sigio(void); |
61 | extern void write_sigio_workaround(void); | ||
62 | extern void arch_check_bugs(void); | 61 | extern void arch_check_bugs(void); |
63 | extern int cpu_feature(char *what, char *buf, int len); | 62 | extern int cpu_feature(char *what, char *buf, int len); |
64 | extern int arch_handle_signal(int sig, union uml_pt_regs *regs); | 63 | extern int arch_handle_signal(int sig, union uml_pt_regs *regs); |
diff --git a/arch/um/kernel/Makefile b/arch/um/kernel/Makefile index 8458c30a6265..ac5afaa0306f 100644 --- a/arch/um/kernel/Makefile +++ b/arch/um/kernel/Makefile | |||
@@ -8,7 +8,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 | init_task.o irq.o ksyms.o mem.o physmem.o \ | 10 | init_task.o irq.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_kern.o \ |
12 | signal_kern.o smp.o syscall_kern.o sysrq.o \ | 12 | signal_kern.o smp.o syscall_kern.o sysrq.o \ |
13 | time_kern.o tlb.o trap_kern.o uaccess.o um_arch.o umid.o | 13 | time_kern.o tlb.o trap_kern.o uaccess.o um_arch.o umid.o |
14 | 14 | ||
diff --git a/arch/um/os-Linux/Makefile b/arch/um/os-Linux/Makefile index 73d3d837ed6b..c3d56c2935c2 100644 --- a/arch/um/os-Linux/Makefile +++ b/arch/um/os-Linux/Makefile | |||
@@ -3,14 +3,15 @@ | |||
3 | # Licensed under the GPL | 3 | # Licensed under the GPL |
4 | # | 4 | # |
5 | 5 | ||
6 | obj-y = aio.o elf_aux.o file.o helper.o irq.o main.o mem.o process.o signal.o \ | 6 | obj-y = aio.o elf_aux.o file.o helper.o irq.o main.o mem.o process.o sigio.o \ |
7 | start_up.o time.o trap.o tt.o tty.o uaccess.o umid.o user_syms.o \ | 7 | signal.o start_up.o time.o trap.o tt.o tty.o uaccess.o umid.o \ |
8 | util.o drivers/ sys-$(SUBARCH)/ | 8 | user_syms.o util.o drivers/ sys-$(SUBARCH)/ |
9 | 9 | ||
10 | obj-$(CONFIG_MODE_SKAS) += skas/ | 10 | obj-$(CONFIG_MODE_SKAS) += skas/ |
11 | 11 | ||
12 | USER_OBJS := aio.o elf_aux.o file.o helper.o irq.o main.o mem.o process.o \ | 12 | USER_OBJS := aio.o elf_aux.o file.o helper.o irq.o main.o mem.o process.o \ |
13 | signal.o start_up.o time.o trap.o tt.o tty.o uaccess.o umid.o util.o | 13 | sigio.o signal.o start_up.o time.o trap.o tt.o tty.o uaccess.o umid.o \ |
14 | util.o | ||
14 | 15 | ||
15 | elf_aux.o: $(ARCH_DIR)/kernel-offsets.h | 16 | elf_aux.o: $(ARCH_DIR)/kernel-offsets.h |
16 | CFLAGS_elf_aux.o += -I$(objtree)/arch/um | 17 | CFLAGS_elf_aux.o += -I$(objtree)/arch/um |
diff --git a/arch/um/kernel/sigio_user.c b/arch/um/os-Linux/sigio.c index 9bef9413cb5d..7604c404c4c2 100644 --- a/arch/um/kernel/sigio_user.c +++ b/arch/um/os-Linux/sigio.c | |||
@@ -20,7 +20,7 @@ | |||
20 | #include "sigio.h" | 20 | #include "sigio.h" |
21 | #include "os.h" | 21 | #include "os.h" |
22 | 22 | ||
23 | /* Protected by sigio_lock(), also used by sigio_cleanup, which is an | 23 | /* Protected by sigio_lock(), also used by sigio_cleanup, which is an |
24 | * exitcall. | 24 | * exitcall. |
25 | */ | 25 | */ |
26 | static int write_sigio_pid = -1; | 26 | static int write_sigio_pid = -1; |
@@ -143,7 +143,7 @@ static void update_thread(void) | |||
143 | return; | 143 | return; |
144 | fail: | 144 | fail: |
145 | /* Critical section start */ | 145 | /* Critical section start */ |
146 | if(write_sigio_pid != -1) | 146 | if(write_sigio_pid != -1) |
147 | os_kill_process(write_sigio_pid, 1); | 147 | os_kill_process(write_sigio_pid, 1); |
148 | write_sigio_pid = -1; | 148 | write_sigio_pid = -1; |
149 | close(sigio_private[0]); | 149 | close(sigio_private[0]); |
@@ -160,13 +160,13 @@ int add_sigio_fd(int fd, int read) | |||
160 | 160 | ||
161 | sigio_lock(); | 161 | sigio_lock(); |
162 | for(i = 0; i < current_poll.used; i++){ | 162 | for(i = 0; i < current_poll.used; i++){ |
163 | if(current_poll.poll[i].fd == fd) | 163 | if(current_poll.poll[i].fd == fd) |
164 | goto out; | 164 | goto out; |
165 | } | 165 | } |
166 | 166 | ||
167 | n = current_poll.used + 1; | 167 | n = current_poll.used + 1; |
168 | err = need_poll(n); | 168 | err = need_poll(n); |
169 | if(err) | 169 | if(err) |
170 | goto out; | 170 | goto out; |
171 | 171 | ||
172 | for(i = 0; i < current_poll.used; i++) | 172 | for(i = 0; i < current_poll.used; i++) |
@@ -195,7 +195,7 @@ int ignore_sigio_fd(int fd) | |||
195 | } | 195 | } |
196 | if(i == current_poll.used) | 196 | if(i == current_poll.used) |
197 | goto out; | 197 | goto out; |
198 | 198 | ||
199 | err = need_poll(current_poll.used - 1); | 199 | err = need_poll(current_poll.used - 1); |
200 | if(err) | 200 | if(err) |
201 | goto out; | 201 | goto out; |
@@ -216,7 +216,7 @@ int ignore_sigio_fd(int fd) | |||
216 | return(err); | 216 | return(err); |
217 | } | 217 | } |
218 | 218 | ||
219 | static struct pollfd* setup_initial_poll(int fd) | 219 | static struct pollfd *setup_initial_poll(int fd) |
220 | { | 220 | { |
221 | struct pollfd *p; | 221 | struct pollfd *p; |
222 | 222 | ||
@@ -256,7 +256,7 @@ void write_sigio_workaround(void) | |||
256 | } | 256 | } |
257 | err = os_pipe(l_sigio_private, 1, 1); | 257 | err = os_pipe(l_sigio_private, 1, 1); |
258 | if(err < 0){ | 258 | if(err < 0){ |
259 | printk("write_sigio_workaround - os_pipe 1 failed, " | 259 | printk("write_sigio_workaround - os_pipe 2 failed, " |
260 | "err = %d\n", -err); | 260 | "err = %d\n", -err); |
261 | goto out_close1; | 261 | goto out_close1; |
262 | } | 262 | } |
@@ -317,7 +317,7 @@ void write_sigio_workaround(void) | |||
317 | 317 | ||
318 | void sigio_cleanup(void) | 318 | void sigio_cleanup(void) |
319 | { | 319 | { |
320 | if (write_sigio_pid != -1) { | 320 | if(write_sigio_pid != -1){ |
321 | os_kill_process(write_sigio_pid, 1); | 321 | os_kill_process(write_sigio_pid, 1); |
322 | write_sigio_pid = -1; | 322 | write_sigio_pid = -1; |
323 | } | 323 | } |