Blob


1 #include <u.h>
2 #include <libc.h>
3 #include <venti.h>
4 #include "queue.h"
6 VtConn*
7 vtconn(int infd, int outfd)
8 {
9 VtConn *z;
11 z = vtmallocz(sizeof(VtConn));
12 z->tagrend.l = &z->lk;
13 z->rpcfork.l = &z->lk;
14 z->infd = infd;
15 z->outfd = outfd;
16 z->part = packetalloc();
17 return z;
18 }
20 void
21 vtfreeconn(VtConn *z)
22 {
23 vthangup(z);
24 qlock(&z->lk);
25 for(;;){
26 if(z->readq)
27 _vtqhangup(z->readq);
28 else if(z->writeq)
29 _vtqhangup(z->writeq);
30 else
31 break;
32 rsleep(&z->rpcfork);
33 }
34 packetfree(z->part);
35 vtfree(z);
36 }