diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-15 21:28:30 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-15 21:28:30 -0400 |
| commit | 0586bed3e8563c2eb89bc7256e30ce633ae06cfb (patch) | |
| tree | 7a59610f45f7222f25b3212c53fa28636bb4427c /arch/ia64 | |
| parent | b80cd62b7d4406bbe8c573fe4381dcc71a2850fd (diff) | |
| parent | dbebbfbb1605f0179e7c0d900d941cc9c45de569 (diff) | |
Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
rtmutex: tester: Remove the remaining BKL leftovers
lockdep/timers: Explain in detail the locking problems del_timer_sync() may cause
rtmutex: Simplify PI algorithm and make highest prio task get lock
rwsem: Remove redundant asmregparm annotation
rwsem: Move duplicate function prototypes to linux/rwsem.h
rwsem: Unify the duplicate rwsem_is_locked() inlines
rwsem: Move duplicate init macros and functions to linux/rwsem.h
rwsem: Move duplicate struct rwsem declaration to linux/rwsem.h
x86: Cleanup rwsem_count_t typedef
rwsem: Cleanup includes
locking: Remove deprecated lock initializers
cred: Replace deprecated spinlock initialization
kthread: Replace deprecated spinlock initialization
xtensa: Replace deprecated spinlock initialization
um: Replace deprecated spinlock initialization
sparc: Replace deprecated spinlock initialization
mips: Replace deprecated spinlock initialization
cris: Replace deprecated spinlock initialization
alpha: Replace deprecated spinlock initialization
rtmutex-tester: Remove BKL tests
Diffstat (limited to 'arch/ia64')
| -rw-r--r-- | arch/ia64/include/asm/rwsem.h | 37 |
1 files changed, 0 insertions, 37 deletions
diff --git a/arch/ia64/include/asm/rwsem.h b/arch/ia64/include/asm/rwsem.h index 215d5454c7d3..3027e7516d85 100644 --- a/arch/ia64/include/asm/rwsem.h +++ b/arch/ia64/include/asm/rwsem.h | |||
| @@ -25,20 +25,8 @@ | |||
| 25 | #error "Please don't include <asm/rwsem.h> directly, use <linux/rwsem.h> instead." | 25 | #error "Please don't include <asm/rwsem.h> directly, use <linux/rwsem.h> instead." |
| 26 | #endif | 26 | #endif |
| 27 | 27 | ||
| 28 | #include <linux/list.h> | ||
| 29 | #include <linux/spinlock.h> | ||
| 30 | |||
| 31 | #include <asm/intrinsics.h> | 28 | #include <asm/intrinsics.h> |
| 32 | 29 | ||
| 33 | /* | ||
| 34 | * the semaphore definition | ||
| 35 | */ | ||
| 36 | struct rw_semaphore { | ||
| 37 | signed long count; | ||
| 38 | spinlock_t wait_lock; | ||
| 39 | struct list_head wait_list; | ||
| 40 | }; | ||
| 41 | |||
| 42 | #define RWSEM_UNLOCKED_VALUE __IA64_UL_CONST(0x0000000000000000) | 30 | #define RWSEM_UNLOCKED_VALUE __IA64_UL_CONST(0x0000000000000000) |
| 43 | #define RWSEM_ACTIVE_BIAS (1L) | 31 | #define RWSEM_ACTIVE_BIAS (1L) |
| 44 | #define RWSEM_ACTIVE_MASK (0xffffffffL) | 32 | #define RWSEM_ACTIVE_MASK (0xffffffffL) |
| @@ -46,26 +34,6 @@ struct rw_semaphore { | |||
| 46 | #define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS | 34 | #define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS |
| 47 | #define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) | 35 | #define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) |
| 48 | 36 | ||
| 49 | #define __RWSEM_INITIALIZER(name) \ | ||
| 50 | { RWSEM_UNLOCKED_VALUE, __SPIN_LOCK_UNLOCKED((name).wait_lock), \ | ||
| 51 | LIST_HEAD_INIT((name).wait_list) } | ||
| 52 | |||
| 53 | #define DECLARE_RWSEM(name) \ | ||
| 54 | struct rw_semaphore name = __RWSEM_INITIALIZER(name) | ||
| 55 | |||
| 56 | extern struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem); | ||
| 57 | extern struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem); | ||
| 58 | extern struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem); | ||
| 59 | extern struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem); | ||
| 60 | |||
| 61 | static inline void | ||
| 62 | init_rwsem (struct rw_semaphore *sem) | ||
| 63 | { | ||
| 64 | sem->count = RWSEM_UNLOCKED_VALUE; | ||
| 65 | spin_lock_init(&sem->wait_lock); | ||
| 66 | INIT_LIST_HEAD(&sem->wait_list); | ||
| 67 | } | ||
| 68 | |||
| 69 | /* | 37 | /* |
| 70 | * lock for reading | 38 | * lock for reading |
| 71 | */ | 39 | */ |
| @@ -174,9 +142,4 @@ __downgrade_write (struct rw_semaphore *sem) | |||
| 174 | #define rwsem_atomic_add(delta, sem) atomic64_add(delta, (atomic64_t *)(&(sem)->count)) | 142 | #define rwsem_atomic_add(delta, sem) atomic64_add(delta, (atomic64_t *)(&(sem)->count)) |
| 175 | #define rwsem_atomic_update(delta, sem) atomic64_add_return(delta, (atomic64_t *)(&(sem)->count)) | 143 | #define rwsem_atomic_update(delta, sem) atomic64_add_return(delta, (atomic64_t *)(&(sem)->count)) |
| 176 | 144 | ||
| 177 | static inline int rwsem_is_locked(struct rw_semaphore *sem) | ||
| 178 | { | ||
| 179 | return (sem->count != 0); | ||
| 180 | } | ||
| 181 | |||
| 182 | #endif /* _ASM_IA64_RWSEM_H */ | 145 | #endif /* _ASM_IA64_RWSEM_H */ |
