Lines Matching defs:rrwl
592 _rrw_init_flags(struct rrwlock *rrwl, const char *name, int flags,
595 memset(rrwl, 0, sizeof(struct rrwlock));
596 _rw_init_flags_witness(&rrwl->rrwl_lock, name, RRWLOCK_LO_FLAGS(flags),
601 rrw_enter(struct rrwlock *rrwl, int flags)
605 if (atomic_load_long(&rrwl->rrwl_lock.rwl_owner) == rw_self()) {
609 rrwl->rrwl_wcnt++;
610 WITNESS_LOCK(&rrwl->rrwl_lock.rwl_lock_obj,
616 rv = rw_enter(&rrwl->rrwl_lock, flags);
618 rrwl->rrwl_wcnt = 1;
624 rrw_exit(struct rrwlock *rrwl)
627 if (atomic_load_long(&rrwl->rrwl_lock.rwl_owner) == rw_self()) {
628 KASSERT(rrwl->rrwl_wcnt > 0);
629 rrwl->rrwl_wcnt--;
630 if (rrwl->rrwl_wcnt != 0) {
631 WITNESS_UNLOCK(&rrwl->rrwl_lock.rwl_lock_obj,
637 rw_exit(&rrwl->rrwl_lock);
641 rrw_status(struct rrwlock *rrwl)
643 return (rw_status(&rrwl->rrwl_lock));