1 #include "pthread_impl.h"
3 int pthread_rwlock_timedwrlock(pthread_rwlock_t *restrict rw, const struct timespec *restrict at)
6 while ((r=pthread_rwlock_trywrlock(rw))==EBUSY) {
7 if (!(r=rw->_rw_lock)) continue;
9 a_inc(&rw->_rw_waiters);
10 a_cas(&rw->_rw_lock, r, t);
11 r = __timedwait(&rw->_rw_lock, t, CLOCK_REALTIME, at, 0, 0, 0);
12 a_dec(&rw->_rw_waiters);
13 if (r && r != EINTR) return r;