38 lines
532 B
C
38 lines
532 B
C
#include <u.h>
|
|
#include <libc.h>
|
|
#include <venti.h>
|
|
#include "queue.h"
|
|
|
|
int chattyventi;
|
|
|
|
VtConn*
|
|
vtconn(int infd, int outfd)
|
|
{
|
|
VtConn *z;
|
|
|
|
z = vtmallocz(sizeof(VtConn));
|
|
z->tagrend.l = &z->lk;
|
|
z->rpcfork.l = &z->lk;
|
|
z->infd = infd;
|
|
z->outfd = outfd;
|
|
z->part = packetalloc();
|
|
return z;
|
|
}
|
|
|
|
void
|
|
vtfreeconn(VtConn *z)
|
|
{
|
|
vthangup(z);
|
|
qlock(&z->lk);
|
|
for(;;){
|
|
if(z->readq)
|
|
_vtqhangup(z->readq);
|
|
else if(z->writeq)
|
|
_vtqhangup(z->writeq);
|
|
else
|
|
break;
|
|
rsleep(&z->rpcfork);
|
|
}
|
|
packetfree(z->part);
|
|
vtfree(z);
|
|
}
|