diff options
author | rtm <rtm> | 2006-08-29 14:45:45 +0000 |
---|---|---|
committer | rtm <rtm> | 2006-08-29 14:45:45 +0000 |
commit | 2b19190c13a12b276ac5cd3a69187d2ab504f36e (patch) | |
tree | dac7e7bdb8e6a8fced5ac1fed65ed0322c86927c /spinlock.c | |
parent | b52151e032025f97e42ddc0147c9e49fb958a948 (diff) | |
download | xv6-labs-2b19190c13a12b276ac5cd3a69187d2ab504f36e.tar.gz xv6-labs-2b19190c13a12b276ac5cd3a69187d2ab504f36e.tar.bz2 xv6-labs-2b19190c13a12b276ac5cd3a69187d2ab504f36e.zip |
clean up stale error checks and panics
delete unused functions
a few comments
Diffstat (limited to 'spinlock.c')
-rw-r--r-- | spinlock.c | 43 |
1 files changed, 16 insertions, 27 deletions
@@ -6,18 +6,11 @@ #include "proc.h" #include "spinlock.h" -// Can't call cprintf from inside these routines, -// because cprintf uses them itself. -//#define cprintf dont_use_cprintf - -#define LOCKMAGIC 0x6673ffea - extern int use_console_lock; void initlock(struct spinlock *lock, char *name) { - lock->magic = LOCKMAGIC; lock->name = name; lock->locked = 0; lock->cpu = 0xffffffff; @@ -38,8 +31,6 @@ getcallerpcs(void *v, uint pcs[]) void acquire(struct spinlock * lock) { - if(lock->magic != LOCKMAGIC) - panic("weird lock magic"); if(holding(lock)) panic("acquire"); @@ -47,34 +38,32 @@ acquire(struct spinlock * lock) cli(); cpus[cpu()].nlock++; - while(cmpxchg(0, 1, &lock->locked) == 1) - ; - cpuid(0, 0, 0, 0, 0); // memory barrier - getcallerpcs(&lock, lock->pcs); - lock->cpu = cpu() + 10; - cpus[cpu()].lastacquire = lock; + while(cmpxchg(0, 1, &lock->locked) == 1) + ; + cpuid(0, 0, 0, 0, 0); // memory barrier + getcallerpcs(&lock, lock->pcs); + lock->cpu = cpu() + 10; + cpus[cpu()].lastacquire = lock; } void release(struct spinlock * lock) { - if(lock->magic != LOCKMAGIC) - panic("weird lock magic"); - if(!holding(lock)) - panic("release"); + if(!holding(lock)) + panic("release"); - cpus[cpu()].lastrelease = lock; - lock->pcs[0] = 0; - lock->cpu = 0xffffffff; - cpuid(0, 0, 0, 0, 0); // memory barrier - lock->locked = 0; - if(--cpus[cpu()].nlock == 0) - sti(); + cpus[cpu()].lastrelease = lock; + lock->pcs[0] = 0; + lock->cpu = 0xffffffff; + cpuid(0, 0, 0, 0, 0); // memory barrier + lock->locked = 0; + if(--cpus[cpu()].nlock == 0) + sti(); } int holding(struct spinlock *lock) { - return lock->locked && lock->cpu == cpu() + 10; + return lock->locked && lock->cpu == cpu() + 10; } |