1 056fe1ba 2003-11-23 devnull #include <u.h>
2 056fe1ba 2003-11-23 devnull #include <libc.h>
3 056fe1ba 2003-11-23 devnull #include <venti.h>
4 056fe1ba 2003-11-23 devnull #include "queue.h"
6 a09e80f9 2004-05-23 devnull int chattyventi;
9 056fe1ba 2003-11-23 devnull vtconn(int infd, int outfd)
11 056fe1ba 2003-11-23 devnull VtConn *z;
12 18b18143 2005-02-13 devnull NetConnInfo *nci;
14 056fe1ba 2003-11-23 devnull z = vtmallocz(sizeof(VtConn));
15 056fe1ba 2003-11-23 devnull z->tagrend.l = &z->lk;
16 056fe1ba 2003-11-23 devnull z->rpcfork.l = &z->lk;
17 056fe1ba 2003-11-23 devnull z->infd = infd;
18 056fe1ba 2003-11-23 devnull z->outfd = outfd;
19 056fe1ba 2003-11-23 devnull z->part = packetalloc();
20 18b18143 2005-02-13 devnull nci = getnetconninfo(nil, infd);
21 18b18143 2005-02-13 devnull if(nci == nil)
22 18b18143 2005-02-13 devnull snprint(z->addr, sizeof z->addr, "/dev/fd/%d", infd);
24 18b18143 2005-02-13 devnull strecpy(z->addr, z->addr+sizeof z->addr, nci->raddr);
25 18b18143 2005-02-13 devnull freenetconninfo(nci);
27 056fe1ba 2003-11-23 devnull return z;
31 056fe1ba 2003-11-23 devnull vtfreeconn(VtConn *z)
33 056fe1ba 2003-11-23 devnull vthangup(z);
34 056fe1ba 2003-11-23 devnull qlock(&z->lk);
36 056fe1ba 2003-11-23 devnull if(z->readq)
37 056fe1ba 2003-11-23 devnull _vtqhangup(z->readq);
38 056fe1ba 2003-11-23 devnull else if(z->writeq)
39 056fe1ba 2003-11-23 devnull _vtqhangup(z->writeq);
42 056fe1ba 2003-11-23 devnull rsleep(&z->rpcfork);
44 056fe1ba 2003-11-23 devnull packetfree(z->part);
45 056fe1ba 2003-11-23 devnull vtfree(z);