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 void21 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 else31 break;32 rsleep(&z->rpcfork);33 }34 packetfree(z->part);35 vtfree(z);36 }