summaryrefslogtreecommitdiff
path: root/kernel/spinlock.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/spinlock.c')
-rw-r--r--kernel/spinlock.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/kernel/spinlock.c b/kernel/spinlock.c
index 5a44a46..c238091 100644
--- a/kernel/spinlock.c
+++ b/kernel/spinlock.c
@@ -20,7 +20,7 @@ initlock(struct spinlock *lk, char *name)
// Loops (spins) until the lock is acquired.
// Holding a lock for a long time may cause
// other CPUs to waste time spinning to acquire it.
-void
+void //__attribute__ ((noinline))
acquire(struct spinlock *lk)
{
push_off(); // disable interrupts to avoid deadlock.
@@ -44,11 +44,13 @@ acquire(struct spinlock *lk)
}
// Release the lock.
-void
+void //__attribute__ ((noinline))
release(struct spinlock *lk)
{
- if(!holding(lk))
+ if(!holding(lk)) {
+ printf("%p: !holding %s %p\n", mycpu(), lk->name, lk->cpu);
panic("release");
+ }
lk->cpu = 0;