1 #include <u.h> 2 #include <libc.h> 3 #include <thread.h> 4 #include "threadimpl.h" 5 6 long 7 iocall(Ioproc *io, long (*op)(va_list*), ...) 8 { 9 int ret; 10 11 assert(!io->inuse); 12 io->inuse = 1; 13 io->op = op; 14 va_start(io->arg, op); 15 sendp(io->c, io); 16 recvp(io->c); 17 va_end(io->arg); 18 ret = io->ret; 19 if(ret < 0) 20 errstr(io->err, sizeof io->err); 21 io->inuse = 0; 22 return ret; 23 } 24