diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2011-01-26 15:06:00 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2011-01-27 06:30:39 -0500 |
commit | 12249b34414dba7f386aadcf6be7ca36c6878300 (patch) | |
tree | b096b2fd1c9064b1be78f8781ef3ec8938b3abf5 /arch/ia64 | |
parent | 1c8ed640d918290ddc1de5ada02ef6686a733c9f (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/ia64')
-rw-r--r-- | arch/ia64/include/asm/rwsem.h | 15 |
1 files changed, 0 insertions, 15 deletions
diff --git a/arch/ia64/include/asm/rwsem.h b/arch/ia64/include/asm/rwsem.h index 1fe465804dc7..379854630e9d 100644 --- a/arch/ia64/include/asm/rwsem.h +++ b/arch/ia64/include/asm/rwsem.h | |||
@@ -34,26 +34,11 @@ | |||
34 | #define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS | 34 | #define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS |
35 | #define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) | 35 | #define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) |
36 | 36 | ||
37 | #define __RWSEM_INITIALIZER(name) \ | ||
38 | { RWSEM_UNLOCKED_VALUE, __SPIN_LOCK_UNLOCKED((name).wait_lock), \ | ||
39 | LIST_HEAD_INIT((name).wait_list) } | ||
40 | |||
41 | #define DECLARE_RWSEM(name) \ | ||
42 | struct rw_semaphore name = __RWSEM_INITIALIZER(name) | ||
43 | |||
44 | extern struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem); | 37 | extern struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem); |
45 | extern struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem); | 38 | extern struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem); |
46 | extern struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem); | 39 | extern struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem); |
47 | extern struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem); | 40 | extern struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem); |
48 | 41 | ||
49 | static inline void | ||
50 | init_rwsem (struct rw_semaphore *sem) | ||
51 | { | ||
52 | sem->count = RWSEM_UNLOCKED_VALUE; | ||
53 | spin_lock_init(&sem->wait_lock); | ||
54 | INIT_LIST_HEAD(&sem->wait_list); | ||
55 | } | ||
56 | |||
57 | /* | 42 | /* |
58 | * lock for reading | 43 | * lock for reading |
59 | */ | 44 | */ |