From 1544f90960275dc9211bde30329c3258e0e1bf38 Mon Sep 17 00:00:00 2001 From: rsc Date: Sat, 25 Dec 2004 21:56:33 +0000 Subject: New thread library --- src/libthread/iorw.c | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 src/libthread/iorw.c (limited to 'src/libthread/iorw.c') diff --git a/src/libthread/iorw.c b/src/libthread/iorw.c new file mode 100644 index 00000000..2ad80878 --- /dev/null +++ b/src/libthread/iorw.c @@ -0,0 +1,178 @@ +#include +#include +#include +#include +#include +#include +#include "ioproc.h" + +static long +_ioclose(va_list *arg) +{ + int fd; + + fd = va_arg(*arg, int); + return close(fd); +} +int +ioclose(Ioproc *io, int fd) +{ + return iocall(io, _ioclose, fd); +} + +static long +_iodial(va_list *arg) +{ + char *addr, *local, *dir; + int *cdfp, fd; + + addr = va_arg(*arg, char*); + local = va_arg(*arg, char*); + dir = va_arg(*arg, char*); + cdfp = va_arg(*arg, int*); + + fd = dial(addr, local, dir, cdfp); + return fd; +} +int +iodial(Ioproc *io, char *addr, char *local, char *dir, int *cdfp) +{ + return iocall(io, _iodial, addr, local, dir, cdfp); +} + +static long +_ioopen(va_list *arg) +{ + char *path; + int mode; + + path = va_arg(*arg, char*); + mode = va_arg(*arg, int); + return open(path, mode); +} +int +ioopen(Ioproc *io, char *path, int mode) +{ + return iocall(io, _ioopen, path, mode); +} + +static long +_ioread(va_list *arg) +{ + int fd; + void *a; + long n; + + fd = va_arg(*arg, int); + a = va_arg(*arg, void*); + n = va_arg(*arg, long); + return read(fd, a, n); +} +long +ioread(Ioproc *io, int fd, void *a, long n) +{ + return iocall(io, _ioread, fd, a, n); +} + +static long +_ioreadn(va_list *arg) +{ + int fd; + void *a; + long n; + + fd = va_arg(*arg, int); + a = va_arg(*arg, void*); + n = va_arg(*arg, long); + n = readn(fd, a, n); + return n; +} +long +ioreadn(Ioproc *io, int fd, void *a, long n) +{ + return iocall(io, _ioreadn, fd, a, n); +} + +static long +_iosleep(va_list *arg) +{ + long n; + + n = va_arg(*arg, long); + return sleep(n); +} +int +iosleep(Ioproc *io, long n) +{ + return iocall(io, _iosleep, n); +} + +static long +_iowrite(va_list *arg) +{ + int fd; + void *a; + long n, nn; + + fd = va_arg(*arg, int); + a = va_arg(*arg, void*); + n = va_arg(*arg, long); + nn = write(fd, a, n); + return nn; +} +long +iowrite(Ioproc *io, int fd, void *a, long n) +{ + return iocall(io, _iowrite, fd, a, n); +} + +static long +_iosendfd(va_list *arg) +{ + int n, fd, fd2; + + fd = va_arg(*arg, int); + fd2 = va_arg(*arg, int); + n = sendfd(fd, fd2); + return n; +} +int +iosendfd(Ioproc *io, int fd, int fd2) +{ + return iocall(io, _iosendfd, fd, fd2); +} + +static long +_iorecvfd(va_list *arg) +{ + int n, fd; + + fd = va_arg(*arg, int); + n = recvfd(fd); + return n; +} +int +iorecvfd(Ioproc *io, int fd) +{ + return iocall(io, _iorecvfd, fd); +} + +static long +_ioread9pmsg(va_list *arg) +{ + int fd; + void *a; + int n; + int r; + + fd = va_arg(*arg, int); + a = va_arg(*arg, void*); + n = va_arg(*arg, int); + r = read9pmsg(fd, a, n); + return n; +} +int +ioread9pmsg(Ioproc *io, int fd, void *a, int n) +{ + return iocall(io, _ioread9pmsg, fd, a, n); +} -- cgit v1.2.3