diff options
| author | David du Colombier <0intro@gmail.com> | 2013-09-23 23:16:25 +0200 |
|---|---|---|
| committer | David du Colombier <0intro@gmail.com> | 2013-09-23 23:16:25 +0200 |
| commit | 4b5766580559d101dd1c29cc575b3ffa9f51c2d7 (patch) | |
| tree | f35364a39e255b1336482ee30217d68279ba8699 /src/cmd/fossil/9fid.c | |
| parent | 6f4d00ee45693290fae042b27536b54f77b96acd (diff) | |
| download | plan9port-4b5766580559d101dd1c29cc575b3ffa9f51c2d7.tar.gz plan9port-4b5766580559d101dd1c29cc575b3ffa9f51c2d7.zip | |
fossil: move from liboventi to libthread and libventi
R=rsc
https://codereview.appspot.com/13504049
Diffstat (limited to 'src/cmd/fossil/9fid.c')
| -rw-r--r-- | src/cmd/fossil/9fid.c | 65 |
1 files changed, 30 insertions, 35 deletions
diff --git a/src/cmd/fossil/9fid.c b/src/cmd/fossil/9fid.c index ea7de5ab..49fab0b9 100644 --- a/src/cmd/fossil/9fid.c +++ b/src/cmd/fossil/9fid.c @@ -3,7 +3,7 @@ #include "9.h" static struct { - VtLock* lock; + QLock lock; Fid* free; int nfree; @@ -14,11 +14,11 @@ static void fidLock(Fid* fid, int flags) { if(flags & FidFWlock){ - vtLock(fid->lock); + wlock(&fid->lock); fid->flags = flags; } else - vtRLock(fid->lock); + rlock(&fid->lock); /* * Callers of file* routines are expected to lock fsys->fs->elk @@ -47,10 +47,10 @@ fidUnlock(Fid* fid) fsysFsRUnlock(fid->fsys); if(fid->flags & FidFWlock){ fid->flags = 0; - vtUnlock(fid->lock); + wunlock(&fid->lock); return; } - vtRUnlock(fid->lock); + runlock(&fid->lock); } static Fid* @@ -58,19 +58,17 @@ fidAlloc(void) { Fid *fid; - vtLock(fbox.lock); + qlock(&fbox.lock); if(fbox.nfree > 0){ fid = fbox.free; fbox.free = fid->hash; fbox.nfree--; } else{ - fid = vtMemAllocZ(sizeof(Fid)); - fid->lock = vtLockAlloc(); - fid->alock = vtLockAlloc(); + fid = vtmallocz(sizeof(Fid)); } fbox.inuse++; - vtUnlock(fbox.lock); + qunlock(&fbox.lock); fid->con = nil; fid->fidno = NOFID; @@ -105,11 +103,11 @@ fidFree(Fid* fid) fidUnlock(fid); if(fid->uid != nil){ - vtMemFree(fid->uid); + vtfree(fid->uid); fid->uid = nil; } if(fid->uname != nil){ - vtMemFree(fid->uname); + vtfree(fid->uname); fid->uname = nil; } if(fid->excl != nil) @@ -124,11 +122,11 @@ fidFree(Fid* fid) fid->fsys = nil; } if(fid->cuname != nil){ - vtMemFree(fid->cuname); + vtfree(fid->cuname); fid->cuname = nil; } - vtLock(fbox.lock); + qlock(&fbox.lock); fbox.inuse--; if(fbox.nfree < 10){ fid->hash = fbox.free; @@ -136,11 +134,9 @@ fidFree(Fid* fid) fbox.nfree++; } else{ - vtLockFree(fid->alock); - vtLockFree(fid->lock); - vtMemFree(fid); + vtfree(fid); } - vtUnlock(fbox.lock); + qunlock(&fbox.lock); } static void @@ -182,7 +178,7 @@ fidGet(Con* con, u32int fidno, int flags) return nil; hash = &con->fidhash[fidno % NFidHash]; - vtLock(con->fidlock); + qlock(&con->fidlock); for(fid = *hash; fid != nil; fid = fid->hash){ if(fid->fidno != fidno) continue; @@ -192,17 +188,17 @@ fidGet(Con* con, u32int fidno, int flags) * when called from attach, clone or walk. */ if(flags & FidFCreate){ - vtUnlock(con->fidlock); - vtSetError("%s: fid 0x%ud in use", argv0, fidno); + qunlock(&con->fidlock); + werrstr("%s: fid 0x%ud in use", argv0, fidno); return nil; } fid->ref++; - vtUnlock(con->fidlock); + qunlock(&con->fidlock); fidLock(fid, flags); if((fid->open & FidOCreate) || fid->fidno == NOFID){ fidPut(fid); - vtSetError("%s: fid invalid", argv0); + werrstr("%s: fid invalid", argv0); return nil; } return fid; @@ -228,7 +224,7 @@ fidGet(Con* con, u32int fidno, int flags) fid->next = nil; con->nfid++; - vtUnlock(con->fidlock); + qunlock(&con->fidlock); /* * The FidOCreate flag is used to prevent any @@ -239,19 +235,19 @@ fidGet(Con* con, u32int fidno, int flags) fid->open &= ~FidOCreate; return fid; } - vtUnlock(con->fidlock); + qunlock(&con->fidlock); - vtSetError("%s: fid not found", argv0); + werrstr("%s: fid not found", argv0); return nil; } void fidPut(Fid* fid) { - vtLock(fid->con->fidlock); + qlock(&fid->con->fidlock); assert(fid->ref > 0); fid->ref--; - vtUnlock(fid->con->fidlock); + qunlock(&fid->con->fidlock); if(fid->ref == 0 && fid->fidno == NOFID){ fidFree(fid); @@ -265,12 +261,12 @@ fidClunk(Fid* fid) { assert(fid->flags & FidFWlock); - vtLock(fid->con->fidlock); + qlock(&fid->con->fidlock); assert(fid->ref > 0); fid->ref--; fidUnHash(fid); fid->fidno = NOFID; - vtUnlock(fid->con->fidlock); + qunlock(&fid->con->fidlock); if(fid->ref > 0){ /* not reached - fidUnHash requires ref == 0 */ @@ -286,19 +282,18 @@ fidClunkAll(Con* con) Fid *fid; u32int fidno; - vtLock(con->fidlock); + qlock(&con->fidlock); while(con->fhead != nil){ fidno = con->fhead->fidno; - vtUnlock(con->fidlock); + qunlock(&con->fidlock); if((fid = fidGet(con, fidno, FidFWlock)) != nil) fidClunk(fid); - vtLock(con->fidlock); + qlock(&con->fidlock); } - vtUnlock(con->fidlock); + qunlock(&con->fidlock); } void fidInit(void) { - fbox.lock = vtLockAlloc(); } |
