aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/rwsem.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h
index 2ea18a3def04..148983e21d47 100644
--- a/include/linux/rwsem.h
+++ b/include/linux/rwsem.h
@@ -34,12 +34,12 @@
34 */ 34 */
35struct rw_semaphore { 35struct rw_semaphore {
36 atomic_long_t count; 36 atomic_long_t count;
37#ifdef CONFIG_RWSEM_SPIN_ON_OWNER
38 /* 37 /*
39 * Write owner. Used as a speculative check to see 38 * Write owner or one of the read owners. Can be used as a
40 * if the owner is running on the cpu. 39 * speculative check to see if the owner is running on the cpu.
41 */ 40 */
42 struct task_struct *owner; 41 struct task_struct *owner;
42#ifdef CONFIG_RWSEM_SPIN_ON_OWNER
43 struct optimistic_spin_queue osq; /* spinner MCS lock */ 43 struct optimistic_spin_queue osq; /* spinner MCS lock */
44#endif 44#endif
45 raw_spinlock_t wait_lock; 45 raw_spinlock_t wait_lock;
@@ -73,13 +73,14 @@ static inline int rwsem_is_locked(struct rw_semaphore *sem)
73#endif 73#endif
74 74
75#ifdef CONFIG_RWSEM_SPIN_ON_OWNER 75#ifdef CONFIG_RWSEM_SPIN_ON_OWNER
76#define __RWSEM_OPT_INIT(lockname) , .osq = OSQ_LOCK_UNLOCKED, .owner = NULL 76#define __RWSEM_OPT_INIT(lockname) , .osq = OSQ_LOCK_UNLOCKED
77#else 77#else
78#define __RWSEM_OPT_INIT(lockname) 78#define __RWSEM_OPT_INIT(lockname)
79#endif 79#endif
80 80
81#define __RWSEM_INITIALIZER(name) \ 81#define __RWSEM_INITIALIZER(name) \
82 { __RWSEM_INIT_COUNT(name), \ 82 { __RWSEM_INIT_COUNT(name), \
83 .owner = NULL, \
83 .wait_list = LIST_HEAD_INIT((name).wait_list), \ 84 .wait_list = LIST_HEAD_INIT((name).wait_list), \
84 .wait_lock = __RAW_SPIN_LOCK_UNLOCKED(name.wait_lock) \ 85 .wait_lock = __RAW_SPIN_LOCK_UNLOCKED(name.wait_lock) \
85 __RWSEM_OPT_INIT(name) \ 86 __RWSEM_OPT_INIT(name) \