|
@@ -19,42 +19,11 @@
|
|
|
#define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS
|
|
|
#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS)
|
|
|
|
|
|
-#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
|
|
-# define __RWSEM_DEP_MAP_INIT(lockname) , .dep_map = { .name = #lockname }
|
|
|
-#else
|
|
|
-# define __RWSEM_DEP_MAP_INIT(lockname)
|
|
|
-#endif
|
|
|
-
|
|
|
-#define __RWSEM_INITIALIZER(name) \
|
|
|
- { RWSEM_UNLOCKED_VALUE, __SPIN_LOCK_UNLOCKED((name).wait_lock), \
|
|
|
- LIST_HEAD_INIT((name).wait_list) \
|
|
|
- __RWSEM_DEP_MAP_INIT(name) }
|
|
|
-
|
|
|
-#define DECLARE_RWSEM(name) \
|
|
|
- struct rw_semaphore name = __RWSEM_INITIALIZER(name)
|
|
|
-
|
|
|
extern struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem);
|
|
|
extern struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem);
|
|
|
extern struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem);
|
|
|
extern struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem);
|
|
|
|
|
|
-extern void __init_rwsem(struct rw_semaphore *sem, const char *name,
|
|
|
- struct lock_class_key *key);
|
|
|
-
|
|
|
-#define init_rwsem(sem) \
|
|
|
-do { \
|
|
|
- static struct lock_class_key __key; \
|
|
|
- \
|
|
|
- __init_rwsem((sem), #sem, &__key); \
|
|
|
-} while (0)
|
|
|
-
|
|
|
-static inline void init_rwsem(struct rw_semaphore *sem)
|
|
|
-{
|
|
|
- sem->count = RWSEM_UNLOCKED_VALUE;
|
|
|
- spin_lock_init(&sem->wait_lock);
|
|
|
- INIT_LIST_HEAD(&sem->wait_list);
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* lock for reading
|
|
|
*/
|