Lines Matching refs:io
12 iointerrupt(Ioproc *io) in iointerrupt() argument
14 if(!io->inuse) in iointerrupt()
16 threadint(io->tid); in iointerrupt()
22 Ioproc *io, *x; in xioproc() local
23 io = a; in xioproc()
29 while(recv(io->c, &x) == -1) in xioproc()
33 assert(x == io); in xioproc()
36 while(recv(io->creply, &x) == -1) in xioproc()
40 assert(x == io); in xioproc()
42 io->ret = io->op(&io->arg); in xioproc()
43 if(io->ret < 0) in xioproc()
44 rerrstr(io->err, sizeof io->err); in xioproc()
45 while(send(io->creply, &io) == -1) in xioproc()
47 while(recv(io->creply, &x) == -1) in xioproc()
55 Ioproc *io; in ioproc() local
57 io = mallocz(sizeof(*io), 1); in ioproc()
58 if(io == nil) in ioproc()
60 io->c = chancreate(sizeof(void*), 0); in ioproc()
61 io->creply = chancreate(sizeof(void*), 0); in ioproc()
62 io->tid = proccreate(xioproc, io, STACK); in ioproc()
63 return io; in ioproc()
67 closeioproc(Ioproc *io) in closeioproc() argument
69 if(io == nil) in closeioproc()
71 iointerrupt(io); in closeioproc()
72 while(send(io->c, 0) == -1) in closeioproc()
74 chanfree(io->c); in closeioproc()
75 chanfree(io->creply); in closeioproc()
76 free(io); in closeioproc()