1 #include "pthread_impl.h"
3 int pthread_rwlock_timedwrlock(pthread_rwlock_t *rw, const struct timespec *at)
6 while (pthread_rwlock_trywrlock(rw)==EAGAIN) {
7 if (!w) a_inc(&rw->__waiters), w++;
8 if ((nr=rw->__readers)) p = &rw->__readers;
9 else nr=1, p = &rw->__wrlock;
10 if (__timedwait(p, nr, CLOCK_REALTIME, at, 0)==ETIMEDOUT) {
11 if (w) a_dec(&rw->__waiters);
15 if (w) a_dec(&rw->__waiters);