219e924a5bbd14920f7323692c08933835d38ff9
[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->__readers))
8                         __wait(&rw->__readers, &rw->__waiters, nr, 0);
9                 else
10                         __wait(&rw->__wrlock, &rw->__waiters, 1, 0);
11         }
12         return 0;
13 }