aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/um/drivers/chan_kern.c4
-rw-r--r--arch/um/drivers/chan_user.c10
-rw-r--r--arch/um/drivers/cow_sys.h2
-rw-r--r--arch/um/drivers/daemon_user.c4
-rw-r--r--arch/um/drivers/harddog_user.c4
-rw-r--r--arch/um/drivers/hostaudio_kern.c4
-rw-r--r--arch/um/drivers/net_user.c8
-rw-r--r--arch/um/drivers/port_kern.c2
-rw-r--r--arch/um/drivers/random.c2
-rw-r--r--arch/um/drivers/ubd_kern.c20
-rw-r--r--arch/um/include/os.h2
-rw-r--r--arch/um/kernel/initrd.c2
-rw-r--r--arch/um/kernel/ksyms.c2
-rw-r--r--arch/um/kernel/physmem.c4
-rw-r--r--arch/um/kernel/sigio.c2
-rw-r--r--arch/um/kernel/smp.c12
-rw-r--r--arch/um/kernel/tt/process_kern.c6
-rw-r--r--arch/um/kernel/tt/ptproxy/proxy.c8
-rw-r--r--arch/um/kernel/tt/tracer.c2
-rw-r--r--arch/um/os-Linux/file.c50
-rw-r--r--arch/um/sys-i386/bugs.c4
-rw-r--r--arch/um/sys-i386/ldt.c2
22 files changed, 51 insertions, 105 deletions
diff --git a/arch/um/drivers/chan_kern.c b/arch/um/drivers/chan_kern.c
index 92e069e8253f..3aa351611763 100644
--- a/arch/um/drivers/chan_kern.c
+++ b/arch/um/drivers/chan_kern.c
@@ -98,7 +98,7 @@ int generic_read(int fd, char *c_out, void *unused)
98{ 98{
99 int n; 99 int n;
100 100
101 n = os_read_file_k(fd, c_out, sizeof(*c_out)); 101 n = os_read_file(fd, c_out, sizeof(*c_out));
102 102
103 if(n == -EAGAIN) 103 if(n == -EAGAIN)
104 return 0; 104 return 0;
@@ -111,7 +111,7 @@ int generic_read(int fd, char *c_out, void *unused)
111 111
112int generic_write(int fd, const char *buf, int n, void *unused) 112int generic_write(int fd, const char *buf, int n, void *unused)
113{ 113{
114 return os_write_file_k(fd, buf, n); 114 return os_write_file(fd, buf, n);
115} 115}
116 116
117int generic_window_size(int fd, void *unused, unsigned short *rows_out, 117int generic_window_size(int fd, void *unused, unsigned short *rows_out,
diff --git a/arch/um/drivers/chan_user.c b/arch/um/drivers/chan_user.c
index a15be1720e03..13f0bf852b2a 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_k(pipe_fd, &c, sizeof(c)); 88 count = os_write_file(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_k(pipe_fd, &c, sizeof(c)); 123 count = os_read_file(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_k(pipe_fd, &c, sizeof(c)); 133 count = os_write_file(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_k(fds[0], &c, sizeof(c)); 165 n = os_read_file(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_k(thread_fd, &c, sizeof(c)); 198 count = os_write_file(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/cow_sys.h b/arch/um/drivers/cow_sys.h
index aa7bef9c38d9..15453845d2ba 100644
--- a/arch/um/drivers/cow_sys.h
+++ b/arch/um/drivers/cow_sys.h
@@ -35,7 +35,7 @@ static inline int cow_file_size(char *file, unsigned long long *size_out)
35 35
36static inline int cow_write_file(int fd, void *buf, int size) 36static inline int cow_write_file(int fd, void *buf, int size)
37{ 37{
38 return os_write_file_k(fd, buf, size); 38 return os_write_file(fd, buf, size);
39} 39}
40 40
41#endif 41#endif
diff --git a/arch/um/drivers/daemon_user.c b/arch/um/drivers/daemon_user.c
index e1fd26c1b728..b869e3899683 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_k(pri->control, &req, sizeof(req)); 97 n = os_write_file(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_k(pri->control, sun, sizeof(*sun)); 105 n = os_read_file(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 0fbb1615171e..5eeecf8917c3 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_k(in_fds[0], &c, sizeof(c)); 82 n = os_read_file(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_k(fd, &c, sizeof(c)); 121 n = os_write_file(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 bd6688ea96de..10e08a8c17c3 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_k(state->fd, kbuf, count); 87 err = os_read_file(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_k(state->fd, kbuf, count); 118 err = os_write_file(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 8bc6688c4f0f..3503cff867c3 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_k(fd, &remain, sizeof(remain)); 66 ret = os_read_file(fd, &remain, sizeof(remain));
67 67
68 if (ret != sizeof(remain)) { 68 if (ret != sizeof(remain)) {
69 expected = sizeof(remain); 69 expected = sizeof(remain);
@@ -73,7 +73,7 @@ void read_output(int fd, char *output, int len)
73 73
74 while(remain != 0){ 74 while(remain != 0){
75 expected = (remain < len) ? remain : len; 75 expected = (remain < len) ? remain : len;
76 ret = os_read_file_k(fd, output, expected); 76 ret = os_read_file(fd, output, expected);
77 if (ret != expected) { 77 if (ret != expected) {
78 str = "data"; 78 str = "data";
79 goto err; 79 goto err;
@@ -94,7 +94,7 @@ int net_read(int fd, void *buf, int len)
94{ 94{
95 int n; 95 int n;
96 96
97 n = os_read_file_k(fd, buf, len); 97 n = os_read_file(fd, buf, len);
98 98
99 if(n == -EAGAIN) 99 if(n == -EAGAIN)
100 return 0; 100 return 0;
@@ -122,7 +122,7 @@ int net_write(int fd, void *buf, int len)
122{ 122{
123 int n; 123 int n;
124 124
125 n = os_write_file_k(fd, buf, len); 125 n = os_write_file(fd, buf, len);
126 126
127 if(n == -EAGAIN) 127 if(n == -EAGAIN)
128 return 0; 128 return 0;
diff --git a/arch/um/drivers/port_kern.c b/arch/um/drivers/port_kern.c
index 75bb40126c2e..1c8efd95c421 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_k(fd, NO_WAITER_MSG, sizeof(NO_WAITER_MSG)); 116 os_write_file(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 94838f4c1645..e942e836f995 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_k(random_fd, &data, sizeof(data)); 47 n = os_read_file(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 614fe25a31bd..70509ddaac03 100644
--- a/arch/um/drivers/ubd_kern.c
+++ b/arch/um/drivers/ubd_kern.c
@@ -511,8 +511,8 @@ static void ubd_handler(void)
511 int n; 511 int n;
512 512
513 while(1){ 513 while(1){
514 n = os_read_file_k(thread_fd, &req, 514 n = os_read_file(thread_fd, &req,
515 sizeof(struct io_thread_req *)); 515 sizeof(struct io_thread_req *));
516 if(n != sizeof(req)){ 516 if(n != sizeof(req)){
517 if(n == -EAGAIN) 517 if(n == -EAGAIN)
518 break; 518 break;
@@ -1112,8 +1112,8 @@ static void do_ubd_request(request_queue_t *q)
1112 (unsigned long long) req->sector << 9, 1112 (unsigned long long) req->sector << 9,
1113 sg->offset, sg->length, sg->page); 1113 sg->offset, sg->length, sg->page);
1114 1114
1115 n = os_write_file_k(thread_fd, &io_req, 1115 n = os_write_file(thread_fd, &io_req,
1116 sizeof(struct io_thread_req *)); 1116 sizeof(struct io_thread_req *));
1117 if(n != sizeof(struct io_thread_req *)){ 1117 if(n != sizeof(struct io_thread_req *)){
1118 if(n != -EAGAIN) 1118 if(n != -EAGAIN)
1119 printk("write to io thread failed, " 1119 printk("write to io thread failed, "
@@ -1366,8 +1366,8 @@ static int update_bitmap(struct io_thread_req *req)
1366 return 1; 1366 return 1;
1367 } 1367 }
1368 1368
1369 n = os_write_file_k(req->fds[1], &req->bitmap_words, 1369 n = os_write_file(req->fds[1], &req->bitmap_words,
1370 sizeof(req->bitmap_words)); 1370 sizeof(req->bitmap_words));
1371 if(n != sizeof(req->bitmap_words)){ 1371 if(n != sizeof(req->bitmap_words)){
1372 printk("do_io - bitmap update failed, err = %d fd = %d\n", -n, 1372 printk("do_io - bitmap update failed, err = %d fd = %d\n", -n,
1373 req->fds[1]); 1373 req->fds[1]);
@@ -1411,7 +1411,7 @@ void do_io(struct io_thread_req *req)
1411 do { 1411 do {
1412 buf = &buf[n]; 1412 buf = &buf[n];
1413 len -= n; 1413 len -= n;
1414 n = os_read_file_k(req->fds[bit], buf, len); 1414 n = os_read_file(req->fds[bit], buf, len);
1415 if (n < 0) { 1415 if (n < 0) {
1416 printk("do_io - read failed, err = %d " 1416 printk("do_io - read failed, err = %d "
1417 "fd = %d\n", -n, req->fds[bit]); 1417 "fd = %d\n", -n, req->fds[bit]);
@@ -1421,7 +1421,7 @@ void do_io(struct io_thread_req *req)
1421 } while((n < len) && (n != 0)); 1421 } while((n < len) && (n != 0));
1422 if (n < len) memset(&buf[n], 0, len - n); 1422 if (n < len) memset(&buf[n], 0, len - n);
1423 } else { 1423 } else {
1424 n = os_write_file_k(req->fds[bit], buf, len); 1424 n = os_write_file(req->fds[bit], buf, len);
1425 if(n != len){ 1425 if(n != len){
1426 printk("do_io - write failed err = %d " 1426 printk("do_io - write failed err = %d "
1427 "fd = %d\n", -n, req->fds[bit]); 1427 "fd = %d\n", -n, req->fds[bit]);
@@ -1451,7 +1451,7 @@ int io_thread(void *arg)
1451 1451
1452 ignore_sigwinch_sig(); 1452 ignore_sigwinch_sig();
1453 while(1){ 1453 while(1){
1454 n = os_read_file_k(kernel_fd, &req, 1454 n = os_read_file(kernel_fd, &req,
1455 sizeof(struct io_thread_req *)); 1455 sizeof(struct io_thread_req *));
1456 if(n != sizeof(struct io_thread_req *)){ 1456 if(n != sizeof(struct io_thread_req *)){
1457 if(n < 0) 1457 if(n < 0)
@@ -1465,7 +1465,7 @@ int io_thread(void *arg)
1465 } 1465 }
1466 io_count++; 1466 io_count++;
1467 do_io(req); 1467 do_io(req);
1468 n = os_write_file_k(kernel_fd, &req, 1468 n = os_write_file(kernel_fd, &req,
1469 sizeof(struct io_thread_req *)); 1469 sizeof(struct io_thread_req *));
1470 if(n != sizeof(struct io_thread_req *)) 1470 if(n != sizeof(struct io_thread_req *))
1471 printk("io_thread - write failed, fd = %d, err = %d\n", 1471 printk("io_thread - write failed, fd = %d, err = %d\n",
diff --git a/arch/um/include/os.h b/arch/um/include/os.h
index 901804db3c35..d66380908703 100644
--- a/arch/um/include/os.h
+++ b/arch/um/include/os.h
@@ -144,9 +144,7 @@ extern int os_mode_fd(int fd, int mode);
144extern int os_seek_file(int fd, __u64 offset); 144extern int os_seek_file(int fd, __u64 offset);
145extern int os_open_file(char *file, struct openflags flags, int mode); 145extern int os_open_file(char *file, struct openflags flags, int mode);
146extern int os_read_file(int fd, void *buf, int len); 146extern int os_read_file(int fd, void *buf, int len);
147extern int os_read_file_k(int fd, void *buf, int len);
148extern int os_write_file(int fd, const void *buf, int count); 147extern int os_write_file(int fd, const void *buf, int count);
149extern int os_write_file_k(int fd, const void *buf, int len);
150extern int os_file_size(char *file, unsigned long long *size_out); 148extern int os_file_size(char *file, unsigned long long *size_out);
151extern int os_file_modtime(char *file, unsigned long *modtime); 149extern int os_file_modtime(char *file, unsigned long *modtime);
152extern int os_pipe(int *fd, int stream, int close_on_exec); 150extern int os_pipe(int *fd, int stream, int close_on_exec);
diff --git a/arch/um/kernel/initrd.c b/arch/um/kernel/initrd.c
index cff73faae991..16dc43e9d940 100644
--- a/arch/um/kernel/initrd.c
+++ b/arch/um/kernel/initrd.c
@@ -63,7 +63,7 @@ int load_initrd(char *filename, void *buf, int size)
63 printk("Opening '%s' failed - err = %d\n", filename, -fd); 63 printk("Opening '%s' failed - err = %d\n", filename, -fd);
64 return -1; 64 return -1;
65 } 65 }
66 n = os_read_file_k(fd, buf, size); 66 n = os_read_file(fd, buf, size);
67 if(n != size){ 67 if(n != size){
68 printk("Read of %d bytes from '%s' failed, err = %d\n", size, 68 printk("Read of %d bytes from '%s' failed, err = %d\n", size,
69 filename, -n); 69 filename, -n);
diff --git a/arch/um/kernel/ksyms.c b/arch/um/kernel/ksyms.c
index 7c158448b9fd..7b3e53fb8070 100644
--- a/arch/um/kernel/ksyms.c
+++ b/arch/um/kernel/ksyms.c
@@ -62,9 +62,7 @@ EXPORT_SYMBOL(os_get_exec_close);
62EXPORT_SYMBOL(os_set_exec_close); 62EXPORT_SYMBOL(os_set_exec_close);
63EXPORT_SYMBOL(os_getpid); 63EXPORT_SYMBOL(os_getpid);
64EXPORT_SYMBOL(os_open_file); 64EXPORT_SYMBOL(os_open_file);
65EXPORT_SYMBOL(os_read_file_k);
66EXPORT_SYMBOL(os_read_file); 65EXPORT_SYMBOL(os_read_file);
67EXPORT_SYMBOL(os_write_file_k);
68EXPORT_SYMBOL(os_write_file); 66EXPORT_SYMBOL(os_write_file);
69EXPORT_SYMBOL(os_seek_file); 67EXPORT_SYMBOL(os_seek_file);
70EXPORT_SYMBOL(os_lock_file); 68EXPORT_SYMBOL(os_lock_file);
diff --git a/arch/um/kernel/physmem.c b/arch/um/kernel/physmem.c
index 77021a627da6..df1ad3ba130c 100644
--- a/arch/um/kernel/physmem.c
+++ b/arch/um/kernel/physmem.c
@@ -211,7 +211,7 @@ void physmem_forget_descriptor(int fd)
211 panic("physmem_forget_descriptor - failed to seek " 211 panic("physmem_forget_descriptor - failed to seek "
212 "to %lld in fd %d, error = %d\n", 212 "to %lld in fd %d, error = %d\n",
213 offset, fd, -err); 213 offset, fd, -err);
214 err = os_read_file_k(fd, addr, PAGE_SIZE); 214 err = os_read_file(fd, addr, PAGE_SIZE);
215 if(err < 0) 215 if(err < 0)
216 panic("physmem_forget_descriptor - failed to read " 216 panic("physmem_forget_descriptor - failed to read "
217 "from fd %d to 0x%p, error = %d\n", 217 "from fd %d to 0x%p, error = %d\n",
@@ -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_k(physmem_fd, &__syscall_stub_start, PAGE_SIZE); 344 os_write_file(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 f756e78085e4..89f9866a1354 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_k(sigio_irq_fd, &c, sizeof(c)); 24 os_read_file(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 9ac562124654..e6a7778006ad 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
48void smp_send_reschedule(int cpu) 48void smp_send_reschedule(int cpu)
49{ 49{
50 os_write_file_k(cpu_data[cpu].ipi_pipe[1], "R", 1); 50 os_write_file(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_k(cpu_data[i].ipi_pipe[1], "S", 1); 62 os_write_file(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_k(new_task->thread.mode.tt.switch_pipe[1], &c, 111 CHOOSE_MODE(os_write_file(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_k(fd, &c, 1) == 1) { 182 while (os_read_file(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_k(cpu_data[i].ipi_pipe[1], "C", 1); 242 os_write_file(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 c81bd2074930..c631303cb800 100644
--- a/arch/um/kernel/tt/process_kern.c
+++ b/arch/um/kernel/tt/process_kern.c
@@ -57,14 +57,14 @@ 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_k(to->thread.mode.tt.switch_pipe[1], &c, sizeof(c)); 60 err = os_write_file(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_k(from->thread.mode.tt.switch_pipe[0], &c, 67 err = os_read_file(from->thread.mode.tt.switch_pipe[0], &c,
68 sizeof(c)); 68 sizeof(c));
69 if(err != sizeof(c)) 69 if(err != sizeof(c))
70 panic("read of switch_pipe failed, errno = %d", -err); 70 panic("read of switch_pipe failed, errno = %d", -err);
@@ -114,7 +114,7 @@ void suspend_new_thread(int fd)
114 char c; 114 char c;
115 115
116 os_stop_process(os_getpid()); 116 os_stop_process(os_getpid());
117 err = os_read_file_k(fd, &c, sizeof(c)); 117 err = os_read_file(fd, &c, sizeof(c));
118 if(err != sizeof(c)) 118 if(err != sizeof(c))
119 panic("read failed in suspend_new_thread, err = %d", -err); 119 panic("read failed in suspend_new_thread, err = %d", -err);
120} 120}
diff --git a/arch/um/kernel/tt/ptproxy/proxy.c b/arch/um/kernel/tt/ptproxy/proxy.c
index 007beb6b7c00..420c23f311f3 100644
--- a/arch/um/kernel/tt/ptproxy/proxy.c
+++ b/arch/um/kernel/tt/ptproxy/proxy.c
@@ -338,14 +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_k(fd, gdb_init_string, 341 os_write_file(fd, gdb_init_string,
342 sizeof(gdb_init_string) - 1); 342 sizeof(gdb_init_string) - 1);
343 if(startup){ 343 if(startup){
344 if(stop){ 344 if(stop){
345 os_write_file_k(fd, "b start_kernel\n", 345 os_write_file(fd, "b start_kernel\n",
346 strlen("b start_kernel\n")); 346 strlen("b start_kernel\n"));
347 } 347 }
348 os_write_file_k(fd, "c\n", strlen("c\n")); 348 os_write_file(fd, "c\n", strlen("c\n"));
349 } 349 }
350 if(ptrace(PTRACE_TRACEME, 0, 0, 0) < 0){ 350 if(ptrace(PTRACE_TRACEME, 0, 0, 0) < 0){
351 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 264da6c5a5c3..c23588393f6e 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_k(tracer_winch[1], &c, sizeof(c)); 47 n = os_write_file(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 5e9b8dcf34d4..6f92f732d253 100644
--- a/arch/um/os-Linux/file.c
+++ b/arch/um/os-Linux/file.c
@@ -290,52 +290,8 @@ int os_seek_file(int fd, __u64 offset)
290 return 0; 290 return 0;
291} 291}
292 292
293static int fault_buffer(void *start, int len,
294 int (*copy_proc)(void *addr, void *buf, int len))
295{
296 int page = getpagesize(), i;
297 char c;
298
299 for(i = 0; i < len; i += page){
300 if((*copy_proc)(start + i, &c, sizeof(c)))
301 return -EFAULT;
302 }
303 if((len % page) != 0){
304 if((*copy_proc)(start + len - 1, &c, sizeof(c)))
305 return -EFAULT;
306 }
307 return 0;
308}
309
310static int file_io(int fd, void *buf, int len,
311 int (*io_proc)(int fd, void *buf, int len),
312 int (*copy_user_proc)(void *addr, void *buf, int len))
313{
314 int n, err;
315
316 do {
317 n = (*io_proc)(fd, buf, len);
318 if((n < 0) && (errno == EFAULT)){
319 err = fault_buffer(buf, len, copy_user_proc);
320 if(err)
321 return err;
322 n = (*io_proc)(fd, buf, len);
323 }
324 } while((n < 0) && (errno == EINTR));
325
326 if(n < 0)
327 return -errno;
328 return n;
329}
330
331int os_read_file(int fd, void *buf, int len) 293int os_read_file(int fd, void *buf, int len)
332{ 294{
333 return file_io(fd, buf, len, (int (*)(int, void *, int)) read,
334 copy_from_user_proc);
335}
336
337int os_read_file_k(int fd, void *buf, int len)
338{
339 int n = read(fd, buf, len); 295 int n = read(fd, buf, len);
340 296
341 if(n < 0) 297 if(n < 0)
@@ -345,12 +301,6 @@ int os_read_file_k(int fd, void *buf, int len)
345 301
346int os_write_file(int fd, const void *buf, int len) 302int os_write_file(int fd, const void *buf, int len)
347{ 303{
348 return file_io(fd, (void *) buf, len,
349 (int (*)(int, void *, int)) write, copy_to_user_proc);
350}
351
352int os_write_file_k(int fd, const void *buf, int len)
353{
354 int n = write(fd, (void *) buf, len); 304 int n = write(fd, (void *) buf, len);
355 305
356 if(n < 0) 306 if(n < 0)
diff --git a/arch/um/sys-i386/bugs.c b/arch/um/sys-i386/bugs.c
index f5dfe49c8442..0393e44813e7 100644
--- a/arch/um/sys-i386/bugs.c
+++ b/arch/um/sys-i386/bugs.c
@@ -28,7 +28,7 @@ static char token(int fd, char *buf, int len, char stop)
28 ptr = buf; 28 ptr = buf;
29 end = &buf[len]; 29 end = &buf[len];
30 do { 30 do {
31 n = os_read_file_k(fd, ptr, sizeof(*ptr)); 31 n = os_read_file(fd, ptr, sizeof(*ptr));
32 c = *ptr++; 32 c = *ptr++;
33 if(n != sizeof(*ptr)){ 33 if(n != sizeof(*ptr)){
34 if(n == 0) 34 if(n == 0)
@@ -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_k(fd, &c, sizeof(c)); 70 n = os_read_file(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 d031a13bd969..a939a7ef0227 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_k(new_mm->id.u.mm_fd, &copy, sizeof(copy)); 520 i = os_write_file(new_mm->id.u.mm_fd, &copy, 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);