Blob


1 #include <u.h>
2 #include <unistd.h>
3 #include <fcntl.h>
4 #include <libc.h>
5 #include <fcall.h>
6 #include <thread.h>
7 #include "ioproc.h"
9 static long
10 _ioclose(va_list *arg)
11 {
12 int fd;
14 fd = va_arg(*arg, int);
15 return close(fd);
16 }
17 int
18 ioclose(Ioproc *io, int fd)
19 {
20 return iocall(io, _ioclose, fd);
21 }
23 static long
24 _iodial(va_list *arg)
25 {
26 char *addr, *local, *dir;
27 int *cdfp, fd;
29 addr = va_arg(*arg, char*);
30 local = va_arg(*arg, char*);
31 dir = va_arg(*arg, char*);
32 cdfp = va_arg(*arg, int*);
34 fd = dial(addr, local, dir, cdfp);
35 return fd;
36 }
37 int
38 iodial(Ioproc *io, char *addr, char *local, char *dir, int *cdfp)
39 {
40 return iocall(io, _iodial, addr, local, dir, cdfp);
41 }
43 static long
44 _ioopen(va_list *arg)
45 {
46 char *path;
47 int mode;
49 path = va_arg(*arg, char*);
50 mode = va_arg(*arg, int);
51 return open(path, mode);
52 }
53 int
54 ioopen(Ioproc *io, char *path, int mode)
55 {
56 return iocall(io, _ioopen, path, mode);
57 }
59 static long
60 _ioread(va_list *arg)
61 {
62 int fd;
63 void *a;
64 long n;
66 fd = va_arg(*arg, int);
67 a = va_arg(*arg, void*);
68 n = va_arg(*arg, long);
69 return read(fd, a, n);
70 }
71 long
72 ioread(Ioproc *io, int fd, void *a, long n)
73 {
74 return iocall(io, _ioread, fd, a, n);
75 }
77 static long
78 _ioreadn(va_list *arg)
79 {
80 int fd;
81 void *a;
82 long n;
84 fd = va_arg(*arg, int);
85 a = va_arg(*arg, void*);
86 n = va_arg(*arg, long);
87 n = readn(fd, a, n);
88 return n;
89 }
90 long
91 ioreadn(Ioproc *io, int fd, void *a, long n)
92 {
93 return iocall(io, _ioreadn, fd, a, n);
94 }
96 static long
97 _iosleep(va_list *arg)
98 {
99 long n;
101 n = va_arg(*arg, long);
102 return sleep(n);
104 int
105 iosleep(Ioproc *io, long n)
107 return iocall(io, _iosleep, n);
110 static long
111 _iowrite(va_list *arg)
113 int fd;
114 void *a;
115 long n, nn;
117 fd = va_arg(*arg, int);
118 a = va_arg(*arg, void*);
119 n = va_arg(*arg, long);
120 nn = write(fd, a, n);
121 return nn;
123 long
124 iowrite(Ioproc *io, int fd, void *a, long n)
126 n = iocall(io, _iowrite, fd, a, n);
127 return n;
130 static long
131 _iosendfd(va_list *arg)
133 int n, fd, fd2;
135 fd = va_arg(*arg, int);
136 fd2 = va_arg(*arg, int);
137 n = sendfd(fd, fd2);
138 return n;
140 int
141 iosendfd(Ioproc *io, int fd, int fd2)
143 return iocall(io, _iosendfd, fd, fd2);
146 static long
147 _iorecvfd(va_list *arg)
149 int n, fd;
151 fd = va_arg(*arg, int);
152 n = recvfd(fd);
153 return n;
155 int
156 iorecvfd(Ioproc *io, int fd)
158 return iocall(io, _iorecvfd, fd);
161 static long
162 _ioread9pmsg(va_list *arg)
164 int fd;
165 void *a;
166 int n;
168 fd = va_arg(*arg, int);
169 a = va_arg(*arg, void*);
170 n = va_arg(*arg, int);
171 read9pmsg(fd, a, n);
172 return n;
174 int
175 ioread9pmsg(Ioproc *io, int fd, void *a, int n)
177 return iocall(io, _ioread9pmsg, fd, a, n);