diff options
Diffstat (limited to 'spinlock.c')
-rw-r--r-- | spinlock.c | 19 |
1 files changed, 8 insertions, 11 deletions
@@ -13,7 +13,7 @@ initlock(struct spinlock *lk, char *name) { lk->name = name; lk->locked = 0; - lk->cpu = 0xffffffff; + lk->cpu = 0; } // Acquire the lock. @@ -34,10 +34,7 @@ acquire(struct spinlock *lk) ; // Record info about lock acquisition for debugging. - // The +10 is only so that we can tell the difference - // between forgetting to initialize lock->cpu - // and holding a lock on cpu 0. - lk->cpu = cpu() + 10; + lk->cpu = cpu; getcallerpcs(&lk, lk->pcs); } @@ -49,7 +46,7 @@ release(struct spinlock *lk) panic("release"); lk->pcs[0] = 0; - lk->cpu = 0xffffffff; + lk->cpu = 0; // The xchg serializes, so that reads before release are // not reordered after it. The 1996 PentiumPro manual (Volume 3, @@ -87,7 +84,7 @@ getcallerpcs(void *v, uint pcs[]) int holding(struct spinlock *lock) { - return lock->locked && lock->cpu == cpu() + 10; + return lock->locked && lock->cpu == cpu; } @@ -102,8 +99,8 @@ pushcli(void) eflags = readeflags(); cli(); - if(c->ncli++ == 0) - c->intena = eflags & FL_IF; + if(cpu->ncli++ == 0) + cpu->intena = eflags & FL_IF; } void @@ -111,9 +108,9 @@ popcli(void) { if(readeflags()&FL_IF) panic("popcli - interruptible"); - if(--c->ncli < 0) + if(--cpu->ncli < 0) panic("popcli"); - if(c->ncli == 0 && c->intena) + if(cpu->ncli == 0 && cpu->intena) sti(); } |