Lines Matching refs:rw
125 static inline void __raw_read_lock(raw_rwlock_t *rw)
128 old = rw->lock & 0x7fffffffU;
129 if (_raw_compare_and_swap(&rw->lock, old, old + 1) != old)
130 _raw_read_lock_wait(rw);
133 static inline void __raw_read_unlock(raw_rwlock_t *rw)
137 old = rw->lock;
140 old = _raw_compare_and_swap(&rw->lock, old, old - 1);
144 static inline void __raw_write_lock(raw_rwlock_t *rw)
146 if (unlikely(_raw_compare_and_swap(&rw->lock, 0, 0x80000000) != 0))
147 _raw_write_lock_wait(rw);
150 static inline void __raw_write_unlock(raw_rwlock_t *rw)
152 _raw_compare_and_swap(&rw->lock, 0x80000000, 0);
155 static inline int __raw_read_trylock(raw_rwlock_t *rw)
158 old = rw->lock & 0x7fffffffU;
159 if (likely(_raw_compare_and_swap(&rw->lock, old, old + 1) == old))
161 return _raw_read_trylock_retry(rw);
164 static inline int __raw_write_trylock(raw_rwlock_t *rw)
166 if (likely(_raw_compare_and_swap(&rw->lock, 0, 0x80000000) == 0))
168 return _raw_write_trylock_retry(rw);