Lines Matching refs:rw
97 static __inline__ int __read_trylock(rwlock_t *rw)
111 : "r"(&rw->lock)
117 int _raw_read_trylock(rwlock_t *rw)
119 return __read_trylock(rw) > 0;
123 void _raw_read_lock(rwlock_t *rw)
127 while (__read_trylock(rw) <= 0) {
129 while (!read_can_lock(rw)) {
132 rw, raw_smp_processor_id(), rw->lock);
140 void _raw_read_unlock(rwlock_t *rw)
142 if ( rw->lock == 0 )
145 rw->lock);
147 atomic_dec((atomic_t *) &(rw)->lock);
151 void _raw_write_lock(rwlock_t *rw)
155 while (cmpxchg(&rw->lock, 0, -1) != 0) {
157 while (!write_can_lock(rw)) {
160 rw, raw_smp_processor_id(), rw->lock);
169 int _raw_write_trylock(rwlock_t *rw)
171 if (cmpxchg(&rw->lock, 0, -1) != 0)
178 void _raw_write_unlock(rwlock_t *rw)
180 if (rw->lock >= 0)
183 rw->lock);
185 rw->lock = 0;