minor locking optimizations
[musl] / src / thread / pthread_rwlock_wrlock.c
1 #include "pthread_impl.h"
2
3 int pthread_rwlock_wrlock(pthread_rwlock_t *rw)
4 {
5         int nr;
6         while (pthread_rwlock_trywrlock(rw)==EAGAIN) {
7                 if ((nr=rw->_rw_readers))
8                         __wait(&rw->_rw_readers, &rw->_rw_waiters, nr, 0);
9                 else
10                         __wait(&rw->_rw_wrlock, &rw->_rw_waiters, 1, 0);
11         }
12         return 0;
13 }