plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

iorw.c (2573B)


      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"
      8 
      9 static long
     10 _ioclose(va_list *arg)
     11 {
     12 	int fd;
     13 
     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 }
     22 
     23 static long
     24 _iodial(va_list *arg)
     25 {
     26 	char *addr, *local, *dir;
     27 	int *cdfp, fd;
     28 
     29 	addr = va_arg(*arg, char*);
     30 	local = va_arg(*arg, char*);
     31 	dir = va_arg(*arg, char*);
     32 	cdfp = va_arg(*arg, int*);
     33 
     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 }
     42 
     43 static long
     44 _ioopen(va_list *arg)
     45 {
     46 	char *path;
     47 	int mode;
     48 
     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 }
     58 
     59 static long
     60 _ioread(va_list *arg)
     61 {
     62 	int fd;
     63 	void *a;
     64 	long n;
     65 
     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 }
     76 
     77 static long
     78 _ioreadn(va_list *arg)
     79 {
     80 	int fd;
     81 	void *a;
     82 	long n;
     83 
     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 }
     95 
     96 static long
     97 _iosleep(va_list *arg)
     98 {
     99 	long n;
    100 
    101 	n = va_arg(*arg, long);
    102 	return sleep(n);
    103 }
    104 int
    105 iosleep(Ioproc *io, long n)
    106 {
    107 	return iocall(io, _iosleep, n);
    108 }
    109 
    110 static long
    111 _iowrite(va_list *arg)
    112 {
    113 	int fd;
    114 	void *a;
    115 	long n, nn;
    116 
    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;
    122 }
    123 long
    124 iowrite(Ioproc *io, int fd, void *a, long n)
    125 {
    126 	n = iocall(io, _iowrite, fd, a, n);
    127 	return n;
    128 }
    129 
    130 static long
    131 _iosendfd(va_list *arg)
    132 {
    133 	int n, fd, fd2;
    134 
    135 	fd = va_arg(*arg, int);
    136 	fd2 = va_arg(*arg, int);
    137 	n = sendfd(fd, fd2);
    138 	return n;
    139 }
    140 int
    141 iosendfd(Ioproc *io, int fd, int fd2)
    142 {
    143 	return iocall(io, _iosendfd, fd, fd2);
    144 }
    145 
    146 static long
    147 _iorecvfd(va_list *arg)
    148 {
    149 	int n, fd;
    150 
    151 	fd = va_arg(*arg, int);
    152 	n = recvfd(fd);
    153 	return n;
    154 }
    155 int
    156 iorecvfd(Ioproc *io, int fd)
    157 {
    158 	return iocall(io, _iorecvfd, fd);
    159 }
    160 
    161 static long
    162 _ioread9pmsg(va_list *arg)
    163 {
    164 	int fd;
    165 	void *a;
    166 	int n;
    167 
    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;
    173 }
    174 int
    175 ioread9pmsg(Ioproc *io, int fd, void *a, int n)
    176 {
    177 	return iocall(io, _ioread9pmsg, fd, a, n);
    178 }