aboutsummaryrefslogtreecommitdiff
path: root/src/lib9/qlock.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2004-04-29 17:13:24 +0000
committerrsc <devnull@localhost>2004-04-29 17:13:24 +0000
commitbe36ff68854c86247fdc769c0eaa89eb284b5ca7 (patch)
treea523e17071eb0e3088f906446b158b3d184b77fe /src/lib9/qlock.c
parent3d72637f9b4c42b1fc9b7d95d278ea3dd65c748d (diff)
downloadplan9port-be36ff68854c86247fdc769c0eaa89eb284b5ca7.tar.gz
plan9port-be36ff68854c86247fdc769c0eaa89eb284b5ca7.tar.bz2
plan9port-be36ff68854c86247fdc769c0eaa89eb284b5ca7.zip
add -W to specify window size.
various other little fixes.
Diffstat (limited to 'src/lib9/qlock.c')
-rw-r--r--src/lib9/qlock.c32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/lib9/qlock.c b/src/lib9/qlock.c
index 55a18466..00bbcc7d 100644
--- a/src/lib9/qlock.c
+++ b/src/lib9/qlock.c
@@ -34,8 +34,10 @@ getqlp(void)
for(p = op+1; ; p++){
if(p == &ql.x[nelem(ql.x)])
p = ql.x;
- if(p == op)
+ if(p == op){
+ fprint(2, "qlock: out of qlp\n");
abort();
+ }
if(_tas(&(p->inuse)) == 0){
ql.p = p;
p->next = nil;
@@ -233,8 +235,10 @@ wunlock(RWLock *q)
QLp *p;
lock(&q->lock);
- if(q->writer == 0)
+ if(q->writer == 0){
+ fprint(2, "wunlock: not holding lock\n");
abort();
+ }
p = q->head;
if(p == nil){
q->writer = 0;
@@ -252,8 +256,10 @@ wunlock(RWLock *q)
return;
}
- if(p->state != QueuingR)
+ if(p->state != QueuingR){
+ fprint(2, "wunlock: bad state\n");
abort();
+ }
/* wake waiting readers */
while(q->head != nil && q->head->state == QueuingR){
@@ -274,12 +280,16 @@ rsleep(Rendez *r)
{
QLp *t, *me;
- if(!r->l)
+ if(!r->l){
+ fprint(2, "rsleep: no lock\n");
abort();
+ }
lock(&r->l->lock);
/* we should hold the qlock */
- if(!r->l->locked)
+ if(!r->l->locked){
+ fprint(2, "rsleep: not locked\n");
abort();
+ }
/* add ourselves to the wait list */
me = getqlp();
@@ -309,8 +319,10 @@ rsleep(Rendez *r)
while((*_rendezvousp)((ulong)me, 0x23456) == ~0)
;
me->inuse = 0;
- if(!r->l->locked)
+ if(!r->l->locked){
+ fprint(2, "rsleep: not locked after wakeup\n");
abort();
+ }
}
int
@@ -323,11 +335,15 @@ rwakeup(Rendez *r)
* put on front so guys that have been waiting will not get starved
*/
- if(!r->l)
+ if(!r->l){
+ fprint(2, "rwakeup: no lock\n");
abort();
+ }
lock(&r->l->lock);
- if(!r->l->locked)
+ if(!r->l->locked){
+ fprint(2, "rwakeup: not locked\n");
abort();
+ }
t = r->head;
if(t == nil){