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); |
