Lines Matching refs:rwstate
140 volatile uint32_t *rwstate = (volatile uint32_t *)&rwlp->rwlock_readers; in rw_read_held() local
149 readers = *rwstate; in rw_read_held()
183 volatile uint32_t *rwstate = (volatile uint32_t *)&rwlp->rwlock_readers; in rw_write_held() local
190 readers = *rwstate; in rw_write_held()
285 volatile uint32_t *rwstate = (volatile uint32_t *)&rwlp->rwlock_readers; in read_lock_try() local
292 while (((readers = *rwstate) & mask) == 0) { in read_lock_try()
293 if (atomic_cas_32(rwstate, readers, readers + 1) == readers) { in read_lock_try()
308 volatile uint32_t *rwstate = (volatile uint32_t *)&rwlp->rwlock_readers; in read_unlock_try() local
313 while (((readers = *rwstate) & URW_HAS_WAITERS) == 0) { in read_unlock_try()
314 if (atomic_cas_32(rwstate, readers, readers - 1) == readers) { in read_unlock_try()
329 volatile uint32_t *rwstate = (volatile uint32_t *)&rwlp->rwlock_readers; in write_lock_try() local
337 while (((readers = *rwstate) & mask) == 0) { in write_lock_try()
338 if (atomic_cas_32(rwstate, readers, readers | URW_WRITE_LOCKED) in write_lock_try()
354 volatile uint32_t *rwstate = (volatile uint32_t *)&rwlp->rwlock_readers; in write_unlock_try() local
359 while (((readers = *rwstate) & URW_HAS_WAITERS) == 0) { in write_unlock_try()
360 if (atomic_cas_32(rwstate, readers, 0) == readers) { in write_unlock_try()
376 volatile uint32_t *rwstate = (volatile uint32_t *)&rwlp->rwlock_readers; in rw_queue_release() local
395 readers = *rwstate; in rw_queue_release()
398 atomic_and_32(rwstate, ~URW_WRITE_LOCKED); in rw_queue_release()
400 atomic_dec_32(rwstate); in rw_queue_release()
413 readers = *rwstate; /* must fetch the value again */ in rw_queue_release()
460 ASSERT((*rwstate & ~URW_HAS_WAITERS) == 0); in rw_queue_release()
461 atomic_or_32(rwstate, URW_WRITE_LOCKED); in rw_queue_release()
475 atomic_and_32(rwstate, ~URW_HAS_WAITERS); in rw_queue_release()
506 volatile uint32_t *rwstate = (volatile uint32_t *)&rwlp->rwlock_readers; in shared_rwlock_lock() local
520 if (try_flag && (*rwstate & URW_WRITE_LOCKED)) { in shared_rwlock_lock()
537 atomic_or_32(rwstate, URW_HAS_WAITERS); in shared_rwlock_lock()
541 readers = *rwstate; in shared_rwlock_lock()
582 volatile uint32_t *rwstate = (volatile uint32_t *)&rwlp->rwlock_readers; in rwlock_lock() local
612 atomic_or_32(rwstate, URW_HAS_WAITERS); in rwlock_lock()
613 readers = *rwstate; in rwlock_lock()
620 atomic_and_32(rwstate, ~URW_HAS_WAITERS); in rwlock_lock()
678 atomic_and_32(rwstate, ~URW_HAS_WAITERS); in rwlock_lock()
683 (*rwstate & URW_WRITE_LOCKED) && in rwlock_lock()
699 atomic_and_32(rwstate, ~URW_HAS_WAITERS); in rwlock_lock()
1080 volatile uint32_t *rwstate = (volatile uint32_t *)&rwlp->rwlock_readers; in rw_unlock() local
1087 readers = *rwstate; in rw_unlock()