summaryrefslogtreecommitdiff
path: root/spinlock.c
diff options
context:
space:
mode:
authorrtm <rtm>2006-08-29 14:45:45 +0000
committerrtm <rtm>2006-08-29 14:45:45 +0000
commit2b19190c13a12b276ac5cd3a69187d2ab504f36e (patch)
treedac7e7bdb8e6a8fced5ac1fed65ed0322c86927c /spinlock.c
parentb52151e032025f97e42ddc0147c9e49fb958a948 (diff)
downloadxv6-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.c43
1 files changed, 16 insertions, 27 deletions
diff --git a/spinlock.c b/spinlock.c
index 663fe33..c77e444 100644
--- a/spinlock.c
+++ b/spinlock.c
@@ -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;
}