diff options
Diffstat (limited to 'arch/sparc/include/asm/rwsem.h')
| -rw-r--r-- | arch/sparc/include/asm/rwsem.h | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/arch/sparc/include/asm/rwsem.h b/arch/sparc/include/asm/rwsem.h index a2b4302869b..069bf4d663a 100644 --- a/arch/sparc/include/asm/rwsem.h +++ b/arch/sparc/include/asm/rwsem.h | |||
| @@ -13,53 +13,12 @@ | |||
| 13 | 13 | ||
| 14 | #ifdef __KERNEL__ | 14 | #ifdef __KERNEL__ |
| 15 | 15 | ||
| 16 | #include <linux/list.h> | ||
| 17 | #include <linux/spinlock.h> | ||
| 18 | |||
| 19 | struct rwsem_waiter; | ||
| 20 | |||
| 21 | struct rw_semaphore { | ||
| 22 | signed long count; | ||
| 23 | #define RWSEM_UNLOCKED_VALUE 0x00000000L | 16 | #define RWSEM_UNLOCKED_VALUE 0x00000000L |
| 24 | #define RWSEM_ACTIVE_BIAS 0x00000001L | 17 | #define RWSEM_ACTIVE_BIAS 0x00000001L |
| 25 | #define RWSEM_ACTIVE_MASK 0xffffffffL | 18 | #define RWSEM_ACTIVE_MASK 0xffffffffL |
| 26 | #define RWSEM_WAITING_BIAS (-RWSEM_ACTIVE_MASK-1) | 19 | #define RWSEM_WAITING_BIAS (-RWSEM_ACTIVE_MASK-1) |
| 27 | #define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS | 20 | #define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS |
| 28 | #define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) | 21 | #define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) |
| 29 | spinlock_t wait_lock; | ||
| 30 | struct list_head wait_list; | ||
| 31 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | ||
| 32 | struct lockdep_map dep_map; | ||
| 33 | #endif | ||
| 34 | }; | ||
| 35 | |||
| 36 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | ||
| 37 | # define __RWSEM_DEP_MAP_INIT(lockname) , .dep_map = { .name = #lockname } | ||
| 38 | #else | ||
| 39 | # define __RWSEM_DEP_MAP_INIT(lockname) | ||
| 40 | #endif | ||
| 41 | |||
| 42 | #define __RWSEM_INITIALIZER(name) \ | ||
| 43 | { RWSEM_UNLOCKED_VALUE, __SPIN_LOCK_UNLOCKED((name).wait_lock), \ | ||
| 44 | LIST_HEAD_INIT((name).wait_list) __RWSEM_DEP_MAP_INIT(name) } | ||
| 45 | |||
| 46 | #define DECLARE_RWSEM(name) \ | ||
| 47 | struct rw_semaphore name = __RWSEM_INITIALIZER(name) | ||
| 48 | |||
| 49 | extern struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem); | ||
| 50 | extern struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem); | ||
| 51 | extern struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem); | ||
| 52 | extern struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem); | ||
| 53 | |||
| 54 | extern void __init_rwsem(struct rw_semaphore *sem, const char *name, | ||
| 55 | struct lock_class_key *key); | ||
| 56 | |||
| 57 | #define init_rwsem(sem) \ | ||
| 58 | do { \ | ||
| 59 | static struct lock_class_key __key; \ | ||
| 60 | \ | ||
| 61 | __init_rwsem((sem), #sem, &__key); \ | ||
| 62 | } while (0) | ||
| 63 | 22 | ||
| 64 | /* | 23 | /* |
| 65 | * lock for reading | 24 | * lock for reading |
| @@ -160,11 +119,6 @@ static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem) | |||
| 160 | return atomic64_add_return(delta, (atomic64_t *)(&sem->count)); | 119 | return atomic64_add_return(delta, (atomic64_t *)(&sem->count)); |
| 161 | } | 120 | } |
| 162 | 121 | ||
| 163 | static inline int rwsem_is_locked(struct rw_semaphore *sem) | ||
| 164 | { | ||
| 165 | return (sem->count != 0); | ||
| 166 | } | ||
| 167 | |||
| 168 | #endif /* __KERNEL__ */ | 122 | #endif /* __KERNEL__ */ |
| 169 | 123 | ||
| 170 | #endif /* _SPARC64_RWSEM_H */ | 124 | #endif /* _SPARC64_RWSEM_H */ |
