diff options
-rw-r--r-- | arch/um/drivers/chan_user.c | 10 | ||||
-rw-r--r-- | arch/um/drivers/daemon_user.c | 4 | ||||
-rw-r--r-- | arch/um/drivers/harddog_user.c | 4 | ||||
-rw-r--r-- | arch/um/drivers/hostaudio_kern.c | 4 | ||||
-rw-r--r-- | arch/um/drivers/net_user.c | 2 | ||||
-rw-r--r-- | arch/um/drivers/port_kern.c | 2 | ||||
-rw-r--r-- | arch/um/drivers/random.c | 2 | ||||
-rw-r--r-- | arch/um/drivers/ubd_kern.c | 17 | ||||
-rw-r--r-- | arch/um/include/os.h | 2 | ||||
-rw-r--r-- | arch/um/kernel/ksyms.c | 2 | ||||
-rw-r--r-- | arch/um/kernel/physmem.c | 2 | ||||
-rw-r--r-- | arch/um/kernel/sigio.c | 2 | ||||
-rw-r--r-- | arch/um/kernel/smp.c | 12 | ||||
-rw-r--r-- | arch/um/kernel/tt/process_kern.c | 7 | ||||
-rw-r--r-- | arch/um/kernel/tt/ptproxy/proxy.c | 9 | ||||
-rw-r--r-- | arch/um/kernel/tt/tracer.c | 2 | ||||
-rw-r--r-- | arch/um/os-Linux/file.c | 18 | ||||
-rw-r--r-- | arch/um/sys-i386/bugs.c | 2 | ||||
-rw-r--r-- | arch/um/sys-i386/ldt.c | 2 |
19 files changed, 64 insertions, 41 deletions
diff --git a/arch/um/drivers/chan_user.c b/arch/um/drivers/chan_user.c index ee53cf882f42..d226f103462e 100644 --- a/arch/um/drivers/chan_user.c +++ b/arch/um/drivers/chan_user.c | |||
@@ -85,7 +85,7 @@ static int winch_thread(void *arg) | |||
85 | 85 | ||
86 | pty_fd = data->pty_fd; | 86 | pty_fd = data->pty_fd; |
87 | pipe_fd = data->pipe_fd; | 87 | pipe_fd = data->pipe_fd; |
88 | count = os_write_file(pipe_fd, &c, sizeof(c)); | 88 | count = os_write_file_k(pipe_fd, &c, sizeof(c)); |
89 | if(count != sizeof(c)) | 89 | if(count != sizeof(c)) |
90 | printk("winch_thread : failed to write synchronization " | 90 | printk("winch_thread : failed to write synchronization " |
91 | "byte, err = %d\n", -count); | 91 | "byte, err = %d\n", -count); |
@@ -120,7 +120,7 @@ static int winch_thread(void *arg) | |||
120 | * host - since they are not different kernel threads, we cannot use | 120 | * host - since they are not different kernel threads, we cannot use |
121 | * kernel semaphores. We don't use SysV semaphores because they are | 121 | * kernel semaphores. We don't use SysV semaphores because they are |
122 | * persistent. */ | 122 | * persistent. */ |
123 | count = os_read_file(pipe_fd, &c, sizeof(c)); | 123 | count = os_read_file_k(pipe_fd, &c, sizeof(c)); |
124 | if(count != sizeof(c)) | 124 | if(count != sizeof(c)) |
125 | printk("winch_thread : failed to read synchronization byte, " | 125 | printk("winch_thread : failed to read synchronization byte, " |
126 | "err = %d\n", -count); | 126 | "err = %d\n", -count); |
@@ -130,7 +130,7 @@ static int winch_thread(void *arg) | |||
130 | * are blocked.*/ | 130 | * are blocked.*/ |
131 | sigsuspend(&sigs); | 131 | sigsuspend(&sigs); |
132 | 132 | ||
133 | count = os_write_file(pipe_fd, &c, sizeof(c)); | 133 | count = os_write_file_k(pipe_fd, &c, sizeof(c)); |
134 | if(count != sizeof(c)) | 134 | if(count != sizeof(c)) |
135 | printk("winch_thread : write failed, err = %d\n", | 135 | printk("winch_thread : write failed, err = %d\n", |
136 | -count); | 136 | -count); |
@@ -162,7 +162,7 @@ static int winch_tramp(int fd, struct tty_struct *tty, int *fd_out) | |||
162 | } | 162 | } |
163 | 163 | ||
164 | *fd_out = fds[0]; | 164 | *fd_out = fds[0]; |
165 | n = os_read_file(fds[0], &c, sizeof(c)); | 165 | n = os_read_file_k(fds[0], &c, sizeof(c)); |
166 | if(n != sizeof(c)){ | 166 | if(n != sizeof(c)){ |
167 | printk("winch_tramp : failed to read synchronization byte\n"); | 167 | printk("winch_tramp : failed to read synchronization byte\n"); |
168 | printk("read failed, err = %d\n", -n); | 168 | printk("read failed, err = %d\n", -n); |
@@ -195,7 +195,7 @@ void register_winch(int fd, struct tty_struct *tty) | |||
195 | if(thread > 0){ | 195 | if(thread > 0){ |
196 | register_winch_irq(thread_fd, fd, thread, tty); | 196 | register_winch_irq(thread_fd, fd, thread, tty); |
197 | 197 | ||
198 | count = os_write_file(thread_fd, &c, sizeof(c)); | 198 | count = os_write_file_k(thread_fd, &c, sizeof(c)); |
199 | if(count != sizeof(c)) | 199 | if(count != sizeof(c)) |
200 | printk("register_winch : failed to write " | 200 | printk("register_winch : failed to write " |
201 | "synchronization byte, err = %d\n", | 201 | "synchronization byte, err = %d\n", |
diff --git a/arch/um/drivers/daemon_user.c b/arch/um/drivers/daemon_user.c index b869e3899683..e1fd26c1b728 100644 --- a/arch/um/drivers/daemon_user.c +++ b/arch/um/drivers/daemon_user.c | |||
@@ -94,7 +94,7 @@ static int connect_to_switch(struct daemon_data *pri) | |||
94 | req.version = SWITCH_VERSION; | 94 | req.version = SWITCH_VERSION; |
95 | req.type = REQ_NEW_CONTROL; | 95 | req.type = REQ_NEW_CONTROL; |
96 | req.sock = *local_addr; | 96 | req.sock = *local_addr; |
97 | n = os_write_file(pri->control, &req, sizeof(req)); | 97 | n = os_write_file_k(pri->control, &req, sizeof(req)); |
98 | if(n != sizeof(req)){ | 98 | if(n != sizeof(req)){ |
99 | printk("daemon_open : control setup request failed, err = %d\n", | 99 | printk("daemon_open : control setup request failed, err = %d\n", |
100 | -n); | 100 | -n); |
@@ -102,7 +102,7 @@ static int connect_to_switch(struct daemon_data *pri) | |||
102 | goto out_free; | 102 | goto out_free; |
103 | } | 103 | } |
104 | 104 | ||
105 | n = os_read_file(pri->control, sun, sizeof(*sun)); | 105 | n = os_read_file_k(pri->control, sun, sizeof(*sun)); |
106 | if(n != sizeof(*sun)){ | 106 | if(n != sizeof(*sun)){ |
107 | printk("daemon_open : read of data socket failed, err = %d\n", | 107 | printk("daemon_open : read of data socket failed, err = %d\n", |
108 | -n); | 108 | -n); |
diff --git a/arch/um/drivers/harddog_user.c b/arch/um/drivers/harddog_user.c index 5eeecf8917c3..0fbb1615171e 100644 --- a/arch/um/drivers/harddog_user.c +++ b/arch/um/drivers/harddog_user.c | |||
@@ -79,7 +79,7 @@ int start_watchdog(int *in_fd_ret, int *out_fd_ret, char *sock) | |||
79 | goto out_close_out; | 79 | goto out_close_out; |
80 | } | 80 | } |
81 | 81 | ||
82 | n = os_read_file(in_fds[0], &c, sizeof(c)); | 82 | n = os_read_file_k(in_fds[0], &c, sizeof(c)); |
83 | if(n == 0){ | 83 | if(n == 0){ |
84 | printk("harddog_open - EOF on watchdog pipe\n"); | 84 | printk("harddog_open - EOF on watchdog pipe\n"); |
85 | helper_wait(pid); | 85 | helper_wait(pid); |
@@ -118,7 +118,7 @@ int ping_watchdog(int fd) | |||
118 | int n; | 118 | int n; |
119 | char c = '\n'; | 119 | char c = '\n'; |
120 | 120 | ||
121 | n = os_write_file(fd, &c, sizeof(c)); | 121 | n = os_write_file_k(fd, &c, sizeof(c)); |
122 | if(n != sizeof(c)){ | 122 | if(n != sizeof(c)){ |
123 | printk("ping_watchdog - write failed, err = %d\n", -n); | 123 | printk("ping_watchdog - write failed, err = %d\n", -n); |
124 | if(n < 0) | 124 | if(n < 0) |
diff --git a/arch/um/drivers/hostaudio_kern.c b/arch/um/drivers/hostaudio_kern.c index 10e08a8c17c3..bd6688ea96de 100644 --- a/arch/um/drivers/hostaudio_kern.c +++ b/arch/um/drivers/hostaudio_kern.c | |||
@@ -84,7 +84,7 @@ static ssize_t hostaudio_read(struct file *file, char __user *buffer, | |||
84 | if(kbuf == NULL) | 84 | if(kbuf == NULL) |
85 | return(-ENOMEM); | 85 | return(-ENOMEM); |
86 | 86 | ||
87 | err = os_read_file(state->fd, kbuf, count); | 87 | err = os_read_file_k(state->fd, kbuf, count); |
88 | if(err < 0) | 88 | if(err < 0) |
89 | goto out; | 89 | goto out; |
90 | 90 | ||
@@ -115,7 +115,7 @@ static ssize_t hostaudio_write(struct file *file, const char __user *buffer, | |||
115 | if(copy_from_user(kbuf, buffer, count)) | 115 | if(copy_from_user(kbuf, buffer, count)) |
116 | goto out; | 116 | goto out; |
117 | 117 | ||
118 | err = os_write_file(state->fd, kbuf, count); | 118 | err = os_write_file_k(state->fd, kbuf, count); |
119 | if(err < 0) | 119 | if(err < 0) |
120 | goto out; | 120 | goto out; |
121 | *ppos += err; | 121 | *ppos += err; |
diff --git a/arch/um/drivers/net_user.c b/arch/um/drivers/net_user.c index 3503cff867c3..2dc57a37e4b7 100644 --- a/arch/um/drivers/net_user.c +++ b/arch/um/drivers/net_user.c | |||
@@ -63,7 +63,7 @@ void read_output(int fd, char *output, int len) | |||
63 | } | 63 | } |
64 | 64 | ||
65 | *output = '\0'; | 65 | *output = '\0'; |
66 | ret = os_read_file(fd, &remain, sizeof(remain)); | 66 | ret = os_read_file_k(fd, &remain, sizeof(remain)); |
67 | 67 | ||
68 | if (ret != sizeof(remain)) { | 68 | if (ret != sizeof(remain)) { |
69 | expected = sizeof(remain); | 69 | expected = sizeof(remain); |
diff --git a/arch/um/drivers/port_kern.c b/arch/um/drivers/port_kern.c index 1c8efd95c421..75bb40126c2e 100644 --- a/arch/um/drivers/port_kern.c +++ b/arch/um/drivers/port_kern.c | |||
@@ -113,7 +113,7 @@ static int port_accept(struct port_list *port) | |||
113 | } | 113 | } |
114 | 114 | ||
115 | if(atomic_read(&port->wait_count) == 0){ | 115 | if(atomic_read(&port->wait_count) == 0){ |
116 | os_write_file(fd, NO_WAITER_MSG, sizeof(NO_WAITER_MSG)); | 116 | os_write_file_k(fd, NO_WAITER_MSG, sizeof(NO_WAITER_MSG)); |
117 | printk("No one waiting for port\n"); | 117 | printk("No one waiting for port\n"); |
118 | } | 118 | } |
119 | list_add(&conn->list, &port->pending); | 119 | list_add(&conn->list, &port->pending); |
diff --git a/arch/um/drivers/random.c b/arch/um/drivers/random.c index e942e836f995..94838f4c1645 100644 --- a/arch/um/drivers/random.c +++ b/arch/um/drivers/random.c | |||
@@ -44,7 +44,7 @@ static ssize_t rng_dev_read (struct file *filp, char __user *buf, size_t size, | |||
44 | int n, ret = 0, have_data; | 44 | int n, ret = 0, have_data; |
45 | 45 | ||
46 | while(size){ | 46 | while(size){ |
47 | n = os_read_file(random_fd, &data, sizeof(data)); | 47 | n = os_read_file_k(random_fd, &data, sizeof(data)); |
48 | if(n > 0){ | 48 | if(n > 0){ |
49 | have_data = n; | 49 | have_data = n; |
50 | while (have_data && size) { | 50 | while (have_data && size) { |
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index 83189e188c3f..6d163c9e2885 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c | |||
@@ -504,7 +504,7 @@ static void ubd_handler(void) | |||
504 | struct ubd *dev; | 504 | struct ubd *dev; |
505 | int n; | 505 | int n; |
506 | 506 | ||
507 | n = os_read_file(thread_fd, &req, sizeof(req)); | 507 | n = os_read_file_k(thread_fd, &req, sizeof(req)); |
508 | if(n != sizeof(req)){ | 508 | if(n != sizeof(req)){ |
509 | printk(KERN_ERR "Pid %d - spurious interrupt in ubd_handler, " | 509 | printk(KERN_ERR "Pid %d - spurious interrupt in ubd_handler, " |
510 | "err = %d\n", os_getpid(), -n); | 510 | "err = %d\n", os_getpid(), -n); |
@@ -1092,8 +1092,7 @@ static void do_ubd_request(request_queue_t *q) | |||
1092 | err = prepare_request(req, &io_req); | 1092 | err = prepare_request(req, &io_req); |
1093 | if(!err){ | 1093 | if(!err){ |
1094 | dev->active = 1; | 1094 | dev->active = 1; |
1095 | n = os_write_file(thread_fd, (char *) &io_req, | 1095 | n = os_write_file_k(thread_fd, &io_req, sizeof(io_req)); |
1096 | sizeof(io_req)); | ||
1097 | if(n != sizeof(io_req)) | 1096 | if(n != sizeof(io_req)) |
1098 | printk("write to io thread failed, " | 1097 | printk("write to io thread failed, " |
1099 | "errno = %d\n", -n); | 1098 | "errno = %d\n", -n); |
@@ -1336,8 +1335,8 @@ static int update_bitmap(struct io_thread_req *req) | |||
1336 | return(1); | 1335 | return(1); |
1337 | } | 1336 | } |
1338 | 1337 | ||
1339 | n = os_write_file(req->fds[1], &req->bitmap_words, | 1338 | n = os_write_file_k(req->fds[1], &req->bitmap_words, |
1340 | sizeof(req->bitmap_words)); | 1339 | sizeof(req->bitmap_words)); |
1341 | if(n != sizeof(req->bitmap_words)){ | 1340 | if(n != sizeof(req->bitmap_words)){ |
1342 | printk("do_io - bitmap update failed, err = %d fd = %d\n", -n, | 1341 | printk("do_io - bitmap update failed, err = %d fd = %d\n", -n, |
1343 | req->fds[1]); | 1342 | req->fds[1]); |
@@ -1381,7 +1380,7 @@ void do_io(struct io_thread_req *req) | |||
1381 | do { | 1380 | do { |
1382 | buf = &buf[n]; | 1381 | buf = &buf[n]; |
1383 | len -= n; | 1382 | len -= n; |
1384 | n = os_read_file(req->fds[bit], buf, len); | 1383 | n = os_read_file_k(req->fds[bit], buf, len); |
1385 | if (n < 0) { | 1384 | if (n < 0) { |
1386 | printk("do_io - read failed, err = %d " | 1385 | printk("do_io - read failed, err = %d " |
1387 | "fd = %d\n", -n, req->fds[bit]); | 1386 | "fd = %d\n", -n, req->fds[bit]); |
@@ -1391,7 +1390,7 @@ void do_io(struct io_thread_req *req) | |||
1391 | } while((n < len) && (n != 0)); | 1390 | } while((n < len) && (n != 0)); |
1392 | if (n < len) memset(&buf[n], 0, len - n); | 1391 | if (n < len) memset(&buf[n], 0, len - n); |
1393 | } else { | 1392 | } else { |
1394 | n = os_write_file(req->fds[bit], buf, len); | 1393 | n = os_write_file_k(req->fds[bit], buf, len); |
1395 | if(n != len){ | 1394 | if(n != len){ |
1396 | printk("do_io - write failed err = %d " | 1395 | printk("do_io - write failed err = %d " |
1397 | "fd = %d\n", -n, req->fds[bit]); | 1396 | "fd = %d\n", -n, req->fds[bit]); |
@@ -1421,7 +1420,7 @@ int io_thread(void *arg) | |||
1421 | 1420 | ||
1422 | ignore_sigwinch_sig(); | 1421 | ignore_sigwinch_sig(); |
1423 | while(1){ | 1422 | while(1){ |
1424 | n = os_read_file(kernel_fd, &req, sizeof(req)); | 1423 | n = os_read_file_k(kernel_fd, &req, sizeof(req)); |
1425 | if(n != sizeof(req)){ | 1424 | if(n != sizeof(req)){ |
1426 | if(n < 0) | 1425 | if(n < 0) |
1427 | printk("io_thread - read failed, fd = %d, " | 1426 | printk("io_thread - read failed, fd = %d, " |
@@ -1434,7 +1433,7 @@ int io_thread(void *arg) | |||
1434 | } | 1433 | } |
1435 | io_count++; | 1434 | io_count++; |
1436 | do_io(&req); | 1435 | do_io(&req); |
1437 | n = os_write_file(kernel_fd, &req, sizeof(req)); | 1436 | n = os_write_file_k(kernel_fd, &req, sizeof(req)); |
1438 | if(n != sizeof(req)) | 1437 | if(n != sizeof(req)) |
1439 | printk("io_thread - write failed, fd = %d, err = %d\n", | 1438 | printk("io_thread - write failed, fd = %d, err = %d\n", |
1440 | kernel_fd, -n); | 1439 | kernel_fd, -n); |
diff --git a/arch/um/include/os.h b/arch/um/include/os.h index 394adcded0bf..b463170a5308 100644 --- a/arch/um/include/os.h +++ b/arch/um/include/os.h | |||
@@ -144,7 +144,9 @@ extern int os_mode_fd(int fd, int mode); | |||
144 | extern int os_seek_file(int fd, __u64 offset); | 144 | extern int os_seek_file(int fd, __u64 offset); |
145 | extern int os_open_file(char *file, struct openflags flags, int mode); | 145 | extern int os_open_file(char *file, struct openflags flags, int mode); |
146 | extern int os_read_file(int fd, void *buf, int len); | 146 | extern int os_read_file(int fd, void *buf, int len); |
147 | extern int os_read_file_k(int fd, void *buf, int len); | ||
147 | extern int os_write_file(int fd, const void *buf, int count); | 148 | extern int os_write_file(int fd, const void *buf, int count); |
149 | extern int os_write_file_k(int fd, const void *buf, int len); | ||
148 | extern int os_file_size(char *file, unsigned long long *size_out); | 150 | extern int os_file_size(char *file, unsigned long long *size_out); |
149 | extern int os_file_modtime(char *file, unsigned long *modtime); | 151 | extern int os_file_modtime(char *file, unsigned long *modtime); |
150 | extern int os_pipe(int *fd, int stream, int close_on_exec); | 152 | extern int os_pipe(int *fd, int stream, int close_on_exec); |
diff --git a/arch/um/kernel/ksyms.c b/arch/um/kernel/ksyms.c index 7b3e53fb8070..7c158448b9fd 100644 --- a/arch/um/kernel/ksyms.c +++ b/arch/um/kernel/ksyms.c | |||
@@ -62,7 +62,9 @@ EXPORT_SYMBOL(os_get_exec_close); | |||
62 | EXPORT_SYMBOL(os_set_exec_close); | 62 | EXPORT_SYMBOL(os_set_exec_close); |
63 | EXPORT_SYMBOL(os_getpid); | 63 | EXPORT_SYMBOL(os_getpid); |
64 | EXPORT_SYMBOL(os_open_file); | 64 | EXPORT_SYMBOL(os_open_file); |
65 | EXPORT_SYMBOL(os_read_file_k); | ||
65 | EXPORT_SYMBOL(os_read_file); | 66 | EXPORT_SYMBOL(os_read_file); |
67 | EXPORT_SYMBOL(os_write_file_k); | ||
66 | EXPORT_SYMBOL(os_write_file); | 68 | EXPORT_SYMBOL(os_write_file); |
67 | EXPORT_SYMBOL(os_seek_file); | 69 | EXPORT_SYMBOL(os_seek_file); |
68 | EXPORT_SYMBOL(os_lock_file); | 70 | EXPORT_SYMBOL(os_lock_file); |
diff --git a/arch/um/kernel/physmem.c b/arch/um/kernel/physmem.c index df1ad3ba130c..a9856209006b 100644 --- a/arch/um/kernel/physmem.c +++ b/arch/um/kernel/physmem.c | |||
@@ -341,7 +341,7 @@ void setup_physmem(unsigned long start, unsigned long reserve_end, | |||
341 | * from physmem_fd, so it needs to be written out there. | 341 | * from physmem_fd, so it needs to be written out there. |
342 | */ | 342 | */ |
343 | os_seek_file(physmem_fd, __pa(&__syscall_stub_start)); | 343 | os_seek_file(physmem_fd, __pa(&__syscall_stub_start)); |
344 | os_write_file(physmem_fd, &__syscall_stub_start, PAGE_SIZE); | 344 | os_write_file_k(physmem_fd, &__syscall_stub_start, PAGE_SIZE); |
345 | 345 | ||
346 | bootmap_size = init_bootmem(pfn, pfn + delta); | 346 | bootmap_size = init_bootmem(pfn, pfn + delta); |
347 | free_bootmem(__pa(reserve_end) + bootmap_size, | 347 | free_bootmem(__pa(reserve_end) + bootmap_size, |
diff --git a/arch/um/kernel/sigio.c b/arch/um/kernel/sigio.c index 89f9866a1354..f756e78085e4 100644 --- a/arch/um/kernel/sigio.c +++ b/arch/um/kernel/sigio.c | |||
@@ -21,7 +21,7 @@ static irqreturn_t sigio_interrupt(int irq, void *data) | |||
21 | { | 21 | { |
22 | char c; | 22 | char c; |
23 | 23 | ||
24 | os_read_file(sigio_irq_fd, &c, sizeof(c)); | 24 | os_read_file_k(sigio_irq_fd, &c, sizeof(c)); |
25 | reactivate_fd(sigio_irq_fd, SIGIO_WRITE_IRQ); | 25 | reactivate_fd(sigio_irq_fd, SIGIO_WRITE_IRQ); |
26 | return IRQ_HANDLED; | 26 | return IRQ_HANDLED; |
27 | } | 27 | } |
diff --git a/arch/um/kernel/smp.c b/arch/um/kernel/smp.c index 62dd093cbcd7..47b690893c06 100644 --- a/arch/um/kernel/smp.c +++ b/arch/um/kernel/smp.c | |||
@@ -47,7 +47,7 @@ struct task_struct *idle_threads[NR_CPUS]; | |||
47 | 47 | ||
48 | void smp_send_reschedule(int cpu) | 48 | void smp_send_reschedule(int cpu) |
49 | { | 49 | { |
50 | os_write_file(cpu_data[cpu].ipi_pipe[1], "R", 1); | 50 | os_write_file_k(cpu_data[cpu].ipi_pipe[1], "R", 1); |
51 | num_reschedules_sent++; | 51 | num_reschedules_sent++; |
52 | } | 52 | } |
53 | 53 | ||
@@ -59,7 +59,7 @@ void smp_send_stop(void) | |||
59 | for(i = 0; i < num_online_cpus(); i++){ | 59 | for(i = 0; i < num_online_cpus(); i++){ |
60 | if(i == current_thread->cpu) | 60 | if(i == current_thread->cpu) |
61 | continue; | 61 | continue; |
62 | os_write_file(cpu_data[i].ipi_pipe[1], "S", 1); | 62 | os_write_file_k(cpu_data[i].ipi_pipe[1], "S", 1); |
63 | } | 63 | } |
64 | printk("done\n"); | 64 | printk("done\n"); |
65 | } | 65 | } |
@@ -108,8 +108,8 @@ static struct task_struct *idle_thread(int cpu) | |||
108 | { .pid = new_task->thread.mode.tt.extern_pid, | 108 | { .pid = new_task->thread.mode.tt.extern_pid, |
109 | .task = new_task } ); | 109 | .task = new_task } ); |
110 | idle_threads[cpu] = new_task; | 110 | idle_threads[cpu] = new_task; |
111 | CHOOSE_MODE(os_write_file(new_task->thread.mode.tt.switch_pipe[1], &c, | 111 | CHOOSE_MODE(os_write_file_k(new_task->thread.mode.tt.switch_pipe[1], &c, |
112 | sizeof(c)), | 112 | sizeof(c)), |
113 | ({ panic("skas mode doesn't support SMP"); })); | 113 | ({ panic("skas mode doesn't support SMP"); })); |
114 | return(new_task); | 114 | return(new_task); |
115 | } | 115 | } |
@@ -179,7 +179,7 @@ void IPI_handler(int cpu) | |||
179 | int fd; | 179 | int fd; |
180 | 180 | ||
181 | fd = cpu_data[cpu].ipi_pipe[0]; | 181 | fd = cpu_data[cpu].ipi_pipe[0]; |
182 | while (os_read_file(fd, &c, 1) == 1) { | 182 | while (os_read_file_k(fd, &c, 1) == 1) { |
183 | switch (c) { | 183 | switch (c) { |
184 | case 'C': | 184 | case 'C': |
185 | smp_call_function_slave(cpu); | 185 | smp_call_function_slave(cpu); |
@@ -239,7 +239,7 @@ int smp_call_function(void (*_func)(void *info), void *_info, int nonatomic, | |||
239 | info = _info; | 239 | info = _info; |
240 | 240 | ||
241 | for_each_online_cpu(i) | 241 | for_each_online_cpu(i) |
242 | os_write_file(cpu_data[i].ipi_pipe[1], "C", 1); | 242 | os_write_file_k(cpu_data[i].ipi_pipe[1], "C", 1); |
243 | 243 | ||
244 | while (atomic_read(&scf_started) != cpus) | 244 | while (atomic_read(&scf_started) != cpus) |
245 | barrier(); | 245 | barrier(); |
diff --git a/arch/um/kernel/tt/process_kern.c b/arch/um/kernel/tt/process_kern.c index 8029f72afaa7..c81bd2074930 100644 --- a/arch/um/kernel/tt/process_kern.c +++ b/arch/um/kernel/tt/process_kern.c | |||
@@ -57,14 +57,15 @@ void switch_to_tt(void *prev, void *next) | |||
57 | * nor the value in "to" (since it was the task which stole us the CPU, | 57 | * nor the value in "to" (since it was the task which stole us the CPU, |
58 | * which we don't care about). */ | 58 | * which we don't care about). */ |
59 | 59 | ||
60 | err = os_write_file(to->thread.mode.tt.switch_pipe[1], &c, sizeof(c)); | 60 | err = os_write_file_k(to->thread.mode.tt.switch_pipe[1], &c, sizeof(c)); |
61 | if(err != sizeof(c)) | 61 | if(err != sizeof(c)) |
62 | panic("write of switch_pipe failed, err = %d", -err); | 62 | panic("write of switch_pipe failed, err = %d", -err); |
63 | 63 | ||
64 | if(from->thread.mode.tt.switch_pipe[0] == -1) | 64 | if(from->thread.mode.tt.switch_pipe[0] == -1) |
65 | os_kill_process(os_getpid(), 0); | 65 | os_kill_process(os_getpid(), 0); |
66 | 66 | ||
67 | err = os_read_file(from->thread.mode.tt.switch_pipe[0], &c, sizeof(c)); | 67 | err = os_read_file_k(from->thread.mode.tt.switch_pipe[0], &c, |
68 | sizeof(c)); | ||
68 | if(err != sizeof(c)) | 69 | if(err != sizeof(c)) |
69 | panic("read of switch_pipe failed, errno = %d", -err); | 70 | panic("read of switch_pipe failed, errno = %d", -err); |
70 | 71 | ||
@@ -113,7 +114,7 @@ void suspend_new_thread(int fd) | |||
113 | char c; | 114 | char c; |
114 | 115 | ||
115 | os_stop_process(os_getpid()); | 116 | os_stop_process(os_getpid()); |
116 | err = os_read_file(fd, &c, sizeof(c)); | 117 | err = os_read_file_k(fd, &c, sizeof(c)); |
117 | if(err != sizeof(c)) | 118 | if(err != sizeof(c)) |
118 | panic("read failed in suspend_new_thread, err = %d", -err); | 119 | panic("read failed in suspend_new_thread, err = %d", -err); |
119 | } | 120 | } |
diff --git a/arch/um/kernel/tt/ptproxy/proxy.c b/arch/um/kernel/tt/ptproxy/proxy.c index c88e7b5d8a76..007beb6b7c00 100644 --- a/arch/um/kernel/tt/ptproxy/proxy.c +++ b/arch/um/kernel/tt/ptproxy/proxy.c | |||
@@ -338,13 +338,14 @@ int start_debugger(char *prog, int startup, int stop, int *fd_out) | |||
338 | "err = %d\n", -fd); | 338 | "err = %d\n", -fd); |
339 | exit(1); | 339 | exit(1); |
340 | } | 340 | } |
341 | os_write_file(fd, gdb_init_string, sizeof(gdb_init_string) - 1); | 341 | os_write_file_k(fd, gdb_init_string, |
342 | sizeof(gdb_init_string) - 1); | ||
342 | if(startup){ | 343 | if(startup){ |
343 | if(stop){ | 344 | if(stop){ |
344 | os_write_file(fd, "b start_kernel\n", | 345 | os_write_file_k(fd, "b start_kernel\n", |
345 | strlen("b start_kernel\n")); | 346 | strlen("b start_kernel\n")); |
346 | } | 347 | } |
347 | os_write_file(fd, "c\n", strlen("c\n")); | 348 | os_write_file_k(fd, "c\n", strlen("c\n")); |
348 | } | 349 | } |
349 | if(ptrace(PTRACE_TRACEME, 0, 0, 0) < 0){ | 350 | if(ptrace(PTRACE_TRACEME, 0, 0, 0) < 0){ |
350 | printk("start_debugger : PTRACE_TRACEME failed, " | 351 | printk("start_debugger : PTRACE_TRACEME failed, " |
diff --git a/arch/um/kernel/tt/tracer.c b/arch/um/kernel/tt/tracer.c index c23588393f6e..264da6c5a5c3 100644 --- a/arch/um/kernel/tt/tracer.c +++ b/arch/um/kernel/tt/tracer.c | |||
@@ -44,7 +44,7 @@ static void tracer_winch_handler(int sig) | |||
44 | int n; | 44 | int n; |
45 | char c = 1; | 45 | char c = 1; |
46 | 46 | ||
47 | n = os_write_file(tracer_winch[1], &c, sizeof(c)); | 47 | n = os_write_file_k(tracer_winch[1], &c, sizeof(c)); |
48 | if(n != sizeof(c)) | 48 | if(n != sizeof(c)) |
49 | printk("tracer_winch_handler - write failed, err = %d\n", -n); | 49 | printk("tracer_winch_handler - write failed, err = %d\n", -n); |
50 | } | 50 | } |
diff --git a/arch/um/os-Linux/file.c b/arch/um/os-Linux/file.c index 4a9510c67622..5e9b8dcf34d4 100644 --- a/arch/um/os-Linux/file.c +++ b/arch/um/os-Linux/file.c | |||
@@ -334,12 +334,30 @@ int os_read_file(int fd, void *buf, int len) | |||
334 | copy_from_user_proc); | 334 | copy_from_user_proc); |
335 | } | 335 | } |
336 | 336 | ||
337 | int os_read_file_k(int fd, void *buf, int len) | ||
338 | { | ||
339 | int n = read(fd, buf, len); | ||
340 | |||
341 | if(n < 0) | ||
342 | return -errno; | ||
343 | return n; | ||
344 | } | ||
345 | |||
337 | int os_write_file(int fd, const void *buf, int len) | 346 | int os_write_file(int fd, const void *buf, int len) |
338 | { | 347 | { |
339 | return file_io(fd, (void *) buf, len, | 348 | return file_io(fd, (void *) buf, len, |
340 | (int (*)(int, void *, int)) write, copy_to_user_proc); | 349 | (int (*)(int, void *, int)) write, copy_to_user_proc); |
341 | } | 350 | } |
342 | 351 | ||
352 | int os_write_file_k(int fd, const void *buf, int len) | ||
353 | { | ||
354 | int n = write(fd, (void *) buf, len); | ||
355 | |||
356 | if(n < 0) | ||
357 | return -errno; | ||
358 | return n; | ||
359 | } | ||
360 | |||
343 | int os_file_size(char *file, unsigned long long *size_out) | 361 | int os_file_size(char *file, unsigned long long *size_out) |
344 | { | 362 | { |
345 | struct uml_stat buf; | 363 | struct uml_stat buf; |
diff --git a/arch/um/sys-i386/bugs.c b/arch/um/sys-i386/bugs.c index 0393e44813e7..74fd062b201b 100644 --- a/arch/um/sys-i386/bugs.c +++ b/arch/um/sys-i386/bugs.c | |||
@@ -67,7 +67,7 @@ static int find_cpuinfo_line(int fd, char *key, char *scratch, int len) | |||
67 | return 1; | 67 | return 1; |
68 | 68 | ||
69 | do { | 69 | do { |
70 | n = os_read_file(fd, &c, sizeof(c)); | 70 | n = os_read_file_k(fd, &c, sizeof(c)); |
71 | if(n != sizeof(c)){ | 71 | if(n != sizeof(c)){ |
72 | printk("Failed to find newline in " | 72 | printk("Failed to find newline in " |
73 | "/proc/cpuinfo, err = %d\n", -n); | 73 | "/proc/cpuinfo, err = %d\n", -n); |
diff --git a/arch/um/sys-i386/ldt.c b/arch/um/sys-i386/ldt.c index a939a7ef0227..d031a13bd969 100644 --- a/arch/um/sys-i386/ldt.c +++ b/arch/um/sys-i386/ldt.c | |||
@@ -517,7 +517,7 @@ long init_new_ldt(struct mmu_context_skas * new_mm, | |||
517 | .u = | 517 | .u = |
518 | { .copy_segments = | 518 | { .copy_segments = |
519 | from_mm->id.u.mm_fd } } ); | 519 | from_mm->id.u.mm_fd } } ); |
520 | i = os_write_file(new_mm->id.u.mm_fd, ©, sizeof(copy)); | 520 | i = os_write_file_k(new_mm->id.u.mm_fd, ©, sizeof(copy)); |
521 | if(i != sizeof(copy)) | 521 | if(i != sizeof(copy)) |
522 | printk("new_mm : /proc/mm copy_segments failed, " | 522 | printk("new_mm : /proc/mm copy_segments failed, " |
523 | "err = %d\n", -i); | 523 | "err = %d\n", -i); |