Lines Matching defs:rwlock
247 static void __read_lock(tdb_rwlock_t *rwlock)
252 __spin_lock(&rwlock->lock);
254 if (!(rwlock->count & RWLOCK_BIAS)) {
255 rwlock->count++;
256 __spin_unlock(&rwlock->lock);
260 __spin_unlock(&rwlock->lock);
262 while(rwlock->count & RWLOCK_BIAS) {
270 static void __write_lock(tdb_rwlock_t *rwlock)
275 __spin_lock(&rwlock->lock);
277 if (rwlock->count == 0) {
278 rwlock->count |= RWLOCK_BIAS;
279 __spin_unlock(&rwlock->lock);
283 __spin_unlock(&rwlock->lock);
285 while(rwlock->count != 0) {
293 static void __write_unlock(tdb_rwlock_t *rwlock)
295 __spin_lock(&rwlock->lock);
298 if (!(rwlock->count & RWLOCK_BIAS))
302 rwlock->count &= ~RWLOCK_BIAS;
303 __spin_unlock(&rwlock->lock);
306 static void __read_unlock(tdb_rwlock_t *rwlock)
308 __spin_lock(&rwlock->lock);
311 if (!rwlock->count)
314 if (rwlock->count & RWLOCK_BIAS)
318 rwlock->count--;
319 __spin_unlock(&rwlock->lock);