Lines Matching refs:rwlock
27 __pthread_rwlock_unlock (pthread_rwlock_t *rwlock) in __pthread_rwlock_unlock() argument
31 __pthread_spin_wait (&rwlock->__lock); in __pthread_rwlock_unlock()
33 assert (__pthread_spin_trylock (&rwlock->__held) == EBUSY); in __pthread_rwlock_unlock()
35 if (rwlock->__readers > 1) in __pthread_rwlock_unlock()
38 rwlock->__readers--; in __pthread_rwlock_unlock()
39 __pthread_spin_unlock (&rwlock->__lock); in __pthread_rwlock_unlock()
43 if (rwlock->__readers == 1) in __pthread_rwlock_unlock()
45 rwlock->__readers = 0; in __pthread_rwlock_unlock()
51 if (rwlock->__writerqueue) in __pthread_rwlock_unlock()
53 wakeup = rwlock->__writerqueue; in __pthread_rwlock_unlock()
59 __pthread_spin_unlock (&rwlock->__lock); in __pthread_rwlock_unlock()
65 if (rwlock->__readerqueue) in __pthread_rwlock_unlock()
69 __pthread_queue_iterate (rwlock->__readerqueue, wakeup) in __pthread_rwlock_unlock()
76 __pthread_dequeuing_iterate (rwlock->__readerqueue, wakeup) in __pthread_rwlock_unlock()
79 rwlock->__readers += n; in __pthread_rwlock_unlock()
80 rwlock->__readerqueue = 0; in __pthread_rwlock_unlock()
82 __pthread_spin_unlock (&rwlock->__lock); in __pthread_rwlock_unlock()
94 __pthread_spin_unlock (&rwlock->__held); in __pthread_rwlock_unlock()
95 __pthread_spin_unlock (&rwlock->__lock); in __pthread_rwlock_unlock()