int pthread_rwlock_timedwrlock(pthread_rwlock_t *restrict rw, const struct timespec *restrict at)
{
int r, t;
+
+ r = pthread_rwlock_trywrlock(rw);
+ if (r != EBUSY) return r;
+
+ int spins = 100;
+ while (spins-- && rw->_rw_lock) a_spin();
+
while ((r=pthread_rwlock_trywrlock(rw))==EBUSY) {
if (!(r=rw->_rw_lock)) continue;
t = r | 0x80000000;