179 lines · 2.5 KB · C
RawDownload
#include <u.h>#include <unistd.h>#include <fcntl.h>#include <libc.h>#include <fcall.h>#include <thread.h>#include "ioproc.h" static long_ioclose(va_list *arg){	int fd; 	fd = va_arg(*arg, int);	return close(fd);}intioclose(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;}intiodial(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);}intioopen(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);}longioread(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;}longioreadn(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);}intiosleep(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;}longiowrite(Ioproc *io, int fd, void *a, long n){	n = iocall(io, _iowrite, fd, a, n);	return 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;}intiosendfd(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;}intiorecvfd(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;}intioread9pmsg(Ioproc *io, int fd, void *a, int n){	return iocall(io, _ioread9pmsg, fd, a, n);}