Lines Matching defs:rw
72 static __inline__ void __raw_read_lock(raw_rwlock_t *rw)
76 __raw_spin_lock_flags(&rw->lock, flags);
77 rw->counter++;
78 __raw_spin_unlock(&rw->lock);
84 static __inline__ void __raw_read_unlock(raw_rwlock_t *rw)
88 __raw_spin_lock_flags(&rw->lock, flags);
89 rw->counter--;
90 __raw_spin_unlock(&rw->lock);
96 static __inline__ int __raw_read_trylock(raw_rwlock_t *rw)
101 if (__raw_spin_trylock(&rw->lock)) {
102 rw->counter++;
103 __raw_spin_unlock(&rw->lock);
110 if (rw->counter < 0)
114 while (__raw_spin_is_locked(&rw->lock) && rw->counter >= 0)
122 static __inline__ void __raw_write_lock(raw_rwlock_t *rw)
127 __raw_spin_lock_flags(&rw->lock, flags);
129 if (rw->counter != 0) {
130 __raw_spin_unlock(&rw->lock);
133 while (rw->counter != 0)
139 rw->counter = -1; /* mark as write-locked */
144 static __inline__ void __raw_write_unlock(raw_rwlock_t *rw)
146 rw->counter = 0;
147 __raw_spin_unlock(&rw->lock);
152 static __inline__ int __raw_write_trylock(raw_rwlock_t *rw)
158 if (__raw_spin_trylock(&rw->lock)) {
159 if (rw->counter == 0) {
160 rw->counter = -1;
164 __raw_spin_unlock(&rw->lock);
176 static __inline__ int __raw_read_can_lock(raw_rwlock_t *rw)
178 return rw->counter >= 0;
185 static __inline__ int __raw_write_can_lock(raw_rwlock_t *rw)
187 return !rw->counter;