diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/Makefile | 1 | ||||
| -rw-r--r-- | kernel/sched.c | 4 | ||||
| -rw-r--r-- | kernel/spinlock.c | 15 |
3 files changed, 14 insertions, 6 deletions
diff --git a/kernel/Makefile b/kernel/Makefile index 8d57a2f1226b..ff4dc02ce170 100644 --- a/kernel/Makefile +++ b/kernel/Makefile | |||
| @@ -12,6 +12,7 @@ obj-y = sched.o fork.o exec_domain.o panic.o printk.o profile.o \ | |||
| 12 | obj-$(CONFIG_FUTEX) += futex.o | 12 | obj-$(CONFIG_FUTEX) += futex.o |
| 13 | obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o | 13 | obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o |
| 14 | obj-$(CONFIG_SMP) += cpu.o spinlock.o | 14 | obj-$(CONFIG_SMP) += cpu.o spinlock.o |
| 15 | obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock.o | ||
| 15 | obj-$(CONFIG_UID16) += uid16.o | 16 | obj-$(CONFIG_UID16) += uid16.o |
| 16 | obj-$(CONFIG_MODULES) += module.o | 17 | obj-$(CONFIG_MODULES) += module.o |
| 17 | obj-$(CONFIG_KALLSYMS) += kallsyms.o | 18 | obj-$(CONFIG_KALLSYMS) += kallsyms.o |
diff --git a/kernel/sched.c b/kernel/sched.c index 2632b812cf24..15db82116e19 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
| @@ -1511,6 +1511,10 @@ static inline void finish_task_switch(runqueue_t *rq, task_t *prev) | |||
| 1511 | * Manfred Spraul <manfred@colorfullife.com> | 1511 | * Manfred Spraul <manfred@colorfullife.com> |
| 1512 | */ | 1512 | */ |
| 1513 | prev_task_flags = prev->flags; | 1513 | prev_task_flags = prev->flags; |
| 1514 | #ifdef CONFIG_DEBUG_SPINLOCK | ||
| 1515 | /* this is a valid case when another task releases the spinlock */ | ||
| 1516 | rq->lock.owner = current; | ||
| 1517 | #endif | ||
| 1514 | finish_arch_switch(prev); | 1518 | finish_arch_switch(prev); |
| 1515 | finish_lock_switch(rq, prev); | 1519 | finish_lock_switch(rq, prev); |
| 1516 | if (mm) | 1520 | if (mm) |
diff --git a/kernel/spinlock.c b/kernel/spinlock.c index 0c3f9d8bbe17..0375fcd5921d 100644 --- a/kernel/spinlock.c +++ b/kernel/spinlock.c | |||
| @@ -3,7 +3,10 @@ | |||
| 3 | * | 3 | * |
| 4 | * Author: Zwane Mwaikambo <zwane@fsmlabs.com> | 4 | * Author: Zwane Mwaikambo <zwane@fsmlabs.com> |
| 5 | * | 5 | * |
| 6 | * Copyright (2004) Ingo Molnar | 6 | * Copyright (2004, 2005) Ingo Molnar |
| 7 | * | ||
| 8 | * This file contains the spinlock/rwlock implementations for the | ||
| 9 | * SMP and the DEBUG_SPINLOCK cases. (UP-nondebug inlines them) | ||
| 7 | */ | 10 | */ |
| 8 | 11 | ||
| 9 | #include <linux/config.h> | 12 | #include <linux/config.h> |
| @@ -17,12 +20,12 @@ | |||
| 17 | * Generic declaration of the raw read_trylock() function, | 20 | * Generic declaration of the raw read_trylock() function, |
| 18 | * architectures are supposed to optimize this: | 21 | * architectures are supposed to optimize this: |
| 19 | */ | 22 | */ |
| 20 | int __lockfunc generic_raw_read_trylock(rwlock_t *lock) | 23 | int __lockfunc generic__raw_read_trylock(raw_rwlock_t *lock) |
| 21 | { | 24 | { |
| 22 | _raw_read_lock(lock); | 25 | __raw_read_lock(lock); |
| 23 | return 1; | 26 | return 1; |
| 24 | } | 27 | } |
| 25 | EXPORT_SYMBOL(generic_raw_read_trylock); | 28 | EXPORT_SYMBOL(generic__raw_read_trylock); |
| 26 | 29 | ||
| 27 | int __lockfunc _spin_trylock(spinlock_t *lock) | 30 | int __lockfunc _spin_trylock(spinlock_t *lock) |
| 28 | { | 31 | { |
| @@ -57,7 +60,7 @@ int __lockfunc _write_trylock(rwlock_t *lock) | |||
| 57 | } | 60 | } |
| 58 | EXPORT_SYMBOL(_write_trylock); | 61 | EXPORT_SYMBOL(_write_trylock); |
| 59 | 62 | ||
| 60 | #ifndef CONFIG_PREEMPT | 63 | #if !defined(CONFIG_PREEMPT) || !defined(CONFIG_SMP) |
| 61 | 64 | ||
| 62 | void __lockfunc _read_lock(rwlock_t *lock) | 65 | void __lockfunc _read_lock(rwlock_t *lock) |
| 63 | { | 66 | { |
| @@ -72,7 +75,7 @@ unsigned long __lockfunc _spin_lock_irqsave(spinlock_t *lock) | |||
| 72 | 75 | ||
| 73 | local_irq_save(flags); | 76 | local_irq_save(flags); |
| 74 | preempt_disable(); | 77 | preempt_disable(); |
| 75 | _raw_spin_lock_flags(lock, flags); | 78 | _raw_spin_lock_flags(lock, &flags); |
| 76 | return flags; | 79 | return flags; |
| 77 | } | 80 | } |
| 78 | EXPORT_SYMBOL(_spin_lock_irqsave); | 81 | EXPORT_SYMBOL(_spin_lock_irqsave); |
