aboutsummaryrefslogtreecommitdiffstats
path: root/arch/xtensa
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2011-01-26 15:06:00 -0500
committerThomas Gleixner <tglx@linutronix.de>2011-01-27 06:30:39 -0500
commit12249b34414dba7f386aadcf6be7ca36c6878300 (patch)
treeb096b2fd1c9064b1be78f8781ef3ec8938b3abf5 /arch/xtensa
parent1c8ed640d918290ddc1de5ada02ef6686a733c9f (diff)
rwsem: Move duplicate init macros and functions to linux/rwsem.h
The rwsem initializers and related macros and functions are mostly the same. Some of them lack the lockdep initializer, but having it in place does not matter for architectures which do not support lockdep. powerpc, sparc, x86: No functional change sh, s390: Removes the duplicate init_rwsem (inline and #define) alpha, ia64, xtensa: Use the lockdep capable init function in lib/rwsem.c which is just uninlining the init function for the LOCKDEP=n case Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc: David Howells <dhowells@redhat.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Matt Turner <mattst88@gmail.com> Acked-by: Tony Luck <tony.luck@intel.com> Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Paul Mundt <lethal@linux-sh.org> Acked-by: David Miller <davem@davemloft.net> Cc: Chris Zankel <chris@zankel.net> LKML-Reference: <20110126195833.771812729@linutronix.de>
Diffstat (limited to 'arch/xtensa')
-rw-r--r--arch/xtensa/include/asm/rwsem.h14
1 files changed, 0 insertions, 14 deletions
diff --git a/arch/xtensa/include/asm/rwsem.h b/arch/xtensa/include/asm/rwsem.h
index 585cab9b0bdf..2fa420212353 100644
--- a/arch/xtensa/include/asm/rwsem.h
+++ b/arch/xtensa/include/asm/rwsem.h
@@ -24,25 +24,11 @@
24#define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS 24#define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS
25#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) 25#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS)
26 26
27#define __RWSEM_INITIALIZER(name) \
28 { RWSEM_UNLOCKED_VALUE, __SPIN_LOCK_UNLOCKED((name).wait_lock), \
29 LIST_HEAD_INIT((name).wait_list) }
30
31#define DECLARE_RWSEM(name) \
32 struct rw_semaphore name = __RWSEM_INITIALIZER(name)
33
34extern struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem); 27extern struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem);
35extern struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem); 28extern struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem);
36extern struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem); 29extern struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem);
37extern struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem); 30extern struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem);
38 31
39static inline void init_rwsem(struct rw_semaphore *sem)
40{
41 sem->count = RWSEM_UNLOCKED_VALUE;
42 spin_lock_init(&sem->wait_lock);
43 INIT_LIST_HEAD(&sem->wait_list);
44}
45
46/* 32/*
47 * lock for reading 33 * lock for reading
48 */ 34 */