Lines Matching refs:rw

136 #define	rw_wowner(rw)	lv_rw_wowner(RW_READ_VALUE(rw))  argument
142 #define rw_recursed(rw) ((rw)->rw_recurse != 0) argument
147 #define rw_wlocked(rw) (rw_wowner((rw)) == curthread) argument
154 #define rw_owner(rw) rw_wowner(rw) argument
170 struct rwlock *rw; in lock_rw() local
172 rw = (struct rwlock *)lock; in lock_rw()
174 rw_rlock(rw); in lock_rw()
176 rw_wlock(rw); in lock_rw()
182 struct rwlock *rw; in unlock_rw() local
184 rw = (struct rwlock *)lock; in unlock_rw()
185 rw_assert(rw, RA_LOCKED | LA_NOTRECURSED); in unlock_rw()
186 if (rw->rw_lock & RW_LOCK_READ) { in unlock_rw()
187 rw_runlock(rw); in unlock_rw()
190 rw_wunlock(rw); in unlock_rw()
199 const struct rwlock *rw = (const struct rwlock *)lock; in owner_rw() local
200 uintptr_t x = rw->rw_lock; in owner_rw()
202 *owner = rw_wowner(rw); in owner_rw()
211 struct rwlock *rw; in _rw_init_flags() local
214 rw = rwlock2rw(c); in _rw_init_flags()
218 ASSERT_ATOMIC_LOAD_PTR(rw->rw_lock, in _rw_init_flags()
220 &rw->rw_lock)); in _rw_init_flags()
236 lock_init(&rw->lock_object, &lock_class_rw, name, NULL, flags); in _rw_init_flags()
237 rw->rw_lock = RW_UNLOCKED; in _rw_init_flags()
238 rw->rw_recurse = 0; in _rw_init_flags()
244 struct rwlock *rw; in _rw_destroy() local
246 rw = rwlock2rw(c); in _rw_destroy()
248 KASSERT(rw->rw_lock == RW_UNLOCKED, ("rw lock %p not unlocked", rw)); in _rw_destroy()
249 KASSERT(rw->rw_recurse == 0, ("rw lock %p still recursed", rw)); in _rw_destroy()
250 rw->rw_lock = RW_DESTROYED; in _rw_destroy()
251 lock_destroy(&rw->lock_object); in _rw_destroy()
274 struct rwlock *rw; in _rw_wlock_cookie() local
277 rw = rwlock2rw(c); in _rw_wlock_cookie()
282 curthread, rw->lock_object.lo_name, file, line)); in _rw_wlock_cookie()
283 KASSERT(rw->rw_lock != RW_DESTROYED, in _rw_wlock_cookie()
285 WITNESS_CHECKORDER(&rw->lock_object, LOP_NEWORDER | LOP_EXCLUSIVE, file, in _rw_wlock_cookie()
289 if (!_rw_write_lock_fetch(rw, &v, tid)) in _rw_wlock_cookie()
290 _rw_wlock_hard(rw, v, file, line); in _rw_wlock_cookie()
292 LOCKSTAT_PROFILE_OBTAIN_RWLOCK_SUCCESS(rw__acquire, rw, in _rw_wlock_cookie()
295 LOCK_LOG_LOCK("WLOCK", &rw->lock_object, 0, rw->rw_recurse, file, line); in _rw_wlock_cookie()
296 WITNESS_LOCK(&rw->lock_object, LOP_EXCLUSIVE, file, line); in _rw_wlock_cookie()
301 __rw_try_wlock_int(struct rwlock *rw LOCK_FILE_LINE_ARG_DEF) in __rw_try_wlock_int()
315 curthread, rw->lock_object.lo_name, file, line)); in __rw_try_wlock_int()
316 KASSERT(rw->rw_lock != RW_DESTROYED, in __rw_try_wlock_int()
323 if (atomic_fcmpset_acq_ptr(&rw->rw_lock, &v, tid)) in __rw_try_wlock_int()
327 if (v == tid && (rw->lock_object.lo_flags & LO_RECURSABLE)) { in __rw_try_wlock_int()
328 rw->rw_recurse++; in __rw_try_wlock_int()
329 atomic_set_ptr(&rw->rw_lock, RW_LOCK_WRITER_RECURSED); in __rw_try_wlock_int()
336 LOCK_LOG_TRY("WLOCK", &rw->lock_object, 0, rval, file, line); in __rw_try_wlock_int()
338 WITNESS_LOCK(&rw->lock_object, LOP_EXCLUSIVE | LOP_TRYLOCK, in __rw_try_wlock_int()
342 rw, 0, 0, file, line, LOCKSTAT_WRITER); in __rw_try_wlock_int()
351 struct rwlock *rw; in __rw_try_wlock() local
353 rw = rwlock2rw(c); in __rw_try_wlock()
354 return (__rw_try_wlock_int(rw LOCK_FILE_LINE_ARG)); in __rw_try_wlock()
360 struct rwlock *rw; in _rw_wunlock_cookie() local
362 rw = rwlock2rw(c); in _rw_wunlock_cookie()
364 KASSERT(rw->rw_lock != RW_DESTROYED, in _rw_wunlock_cookie()
367 WITNESS_UNLOCK(&rw->lock_object, LOP_EXCLUSIVE, file, line); in _rw_wunlock_cookie()
368 LOCK_LOG_LOCK("WUNLOCK", &rw->lock_object, 0, rw->rw_recurse, file, in _rw_wunlock_cookie()
372 _rw_wunlock_hard(rw, (uintptr_t)curthread, file, line); in _rw_wunlock_cookie()
374 __rw_wunlock(rw, curthread, file, line); in _rw_wunlock_cookie()
400 __rw_rlock_try(struct rwlock *rw, struct thread *td, uintptr_t *vp, bool fp in __rw_rlock_try() argument
415 if (atomic_fcmpset_acq_ptr(&rw->rw_lock, vp, in __rw_rlock_try()
417 if (LOCK_LOG_TEST(&rw->lock_object, 0)) in __rw_rlock_try()
420 rw, (void *)*vp, in __rw_rlock_try()
430 __rw_rlock_hard(struct rwlock *rw, struct thread *td, uintptr_t v in __rw_rlock_hard() argument
458 if (__rw_rlock_try(rw, td, &v, false LOCK_FILE_LINE_ARG)) in __rw_rlock_hard()
461 all_time -= lockstat_nsecs(&rw->lock_object); in __rw_rlock_hard()
482 lock_profile_obtain_lock_failed(&rw->lock_object, false, in __rw_rlock_hard()
485 THREAD_CONTENDS_ON_LOCK(&rw->lock_object); in __rw_rlock_hard()
488 if (__rw_rlock_try(rw, td, &v, false LOCK_FILE_LINE_ARG)) in __rw_rlock_hard()
503 if (LOCK_LOG_TEST(&rw->lock_object, 0)) in __rw_rlock_hard()
506 __func__, rw, owner); in __rw_rlock_hard()
509 "lockname:\"%s\"", rw->lock_object.lo_name); in __rw_rlock_hard()
512 v = RW_READ_VALUE(rw); in __rw_rlock_hard()
523 v = RW_READ_VALUE(rw); in __rw_rlock_hard()
530 rw->lock_object.lo_name); in __rw_rlock_hard()
534 v = RW_READ_VALUE(rw); in __rw_rlock_hard()
560 ts = turnstile_trywait(&rw->lock_object); in __rw_rlock_hard()
566 v = RW_READ_VALUE(rw); in __rw_rlock_hard()
604 if (!atomic_fcmpset_ptr(&rw->rw_lock, &v, in __rw_rlock_hard()
607 if (LOCK_LOG_TEST(&rw->lock_object, 0)) in __rw_rlock_hard()
609 __func__, rw); in __rw_rlock_hard()
616 if (LOCK_LOG_TEST(&rw->lock_object, 0)) in __rw_rlock_hard()
618 rw); in __rw_rlock_hard()
620 sleep_time -= lockstat_nsecs(&rw->lock_object); in __rw_rlock_hard()
622 MPASS(owner == rw_owner(rw)); in __rw_rlock_hard()
625 sleep_time += lockstat_nsecs(&rw->lock_object); in __rw_rlock_hard()
628 if (LOCK_LOG_TEST(&rw->lock_object, 0)) in __rw_rlock_hard()
630 __func__, rw); in __rw_rlock_hard()
631 v = RW_READ_VALUE(rw); in __rw_rlock_hard()
633 THREAD_CONTENTION_DONE(&rw->lock_object); in __rw_rlock_hard()
639 all_time += lockstat_nsecs(&rw->lock_object); in __rw_rlock_hard()
641 LOCKSTAT_RECORD4(rw__block, rw, sleep_time, in __rw_rlock_hard()
647 LOCKSTAT_RECORD4(rw__spin, rw, all_time - sleep_time, in __rw_rlock_hard()
657 LOCKSTAT_PROFILE_OBTAIN_RWLOCK_SUCCESS(rw__acquire, rw, contested, in __rw_rlock_hard()
662 __rw_rlock_int(struct rwlock *rw LOCK_FILE_LINE_ARG_DEF) in __rw_rlock_int()
672 td, rw->lock_object.lo_name, file, line)); in __rw_rlock_int()
673 KASSERT(rw->rw_lock != RW_DESTROYED, in __rw_rlock_int()
675 KASSERT(rw_wowner(rw) != td, in __rw_rlock_int()
677 rw->lock_object.lo_name, file, line)); in __rw_rlock_int()
678 WITNESS_CHECKORDER(&rw->lock_object, LOP_NEWORDER, file, line, NULL); in __rw_rlock_int()
680 v = RW_READ_VALUE(rw); in __rw_rlock_int()
682 !__rw_rlock_try(rw, td, &v, true LOCK_FILE_LINE_ARG))) in __rw_rlock_int()
683 __rw_rlock_hard(rw, td, v LOCK_FILE_LINE_ARG); in __rw_rlock_int()
685 lock_profile_obtain_lock_success(&rw->lock_object, false, 0, 0, in __rw_rlock_int()
688 LOCK_LOG_LOCK("RLOCK", &rw->lock_object, 0, 0, file, line); in __rw_rlock_int()
689 WITNESS_LOCK(&rw->lock_object, 0, file, line); in __rw_rlock_int()
696 struct rwlock *rw; in __rw_rlock() local
698 rw = rwlock2rw(c); in __rw_rlock()
699 __rw_rlock_int(rw LOCK_FILE_LINE_ARG); in __rw_rlock()
703 __rw_try_rlock_int(struct rwlock *rw LOCK_FILE_LINE_ARG_DEF) in __rw_try_rlock_int()
712 curthread, rw->lock_object.lo_name, file, line)); in __rw_try_rlock_int()
714 x = rw->rw_lock; in __rw_try_rlock_int()
716 KASSERT(rw->rw_lock != RW_DESTROYED, in __rw_try_rlock_int()
720 if (atomic_fcmpset_acq_ptr(&rw->rw_lock, &x, x + RW_ONE_READER)) { in __rw_try_rlock_int()
721 LOCK_LOG_TRY("RLOCK", &rw->lock_object, 0, 1, file, in __rw_try_rlock_int()
723 WITNESS_LOCK(&rw->lock_object, LOP_TRYLOCK, file, line); in __rw_try_rlock_int()
725 rw, 0, 0, file, line, LOCKSTAT_READER); in __rw_try_rlock_int()
732 LOCK_LOG_TRY("RLOCK", &rw->lock_object, 0, 0, file, line); in __rw_try_rlock_int()
739 struct rwlock *rw; in __rw_try_rlock() local
741 rw = rwlock2rw(c); in __rw_try_rlock()
742 return (__rw_try_rlock_int(rw LOCK_FILE_LINE_ARG)); in __rw_try_rlock()
746 __rw_runlock_try(struct rwlock *rw, struct thread *td, uintptr_t *vp) in __rw_runlock_try() argument
751 if (atomic_fcmpset_rel_ptr(&rw->rw_lock, vp, in __rw_runlock_try()
753 if (LOCK_LOG_TEST(&rw->lock_object, 0)) in __rw_runlock_try()
756 __func__, rw, (void *)*vp, in __rw_runlock_try()
769 __rw_runlock_hard(struct rwlock *rw, struct thread *td, uintptr_t v in __rw_runlock_hard() argument
778 if (__rw_runlock_try(rw, td, &v)) in __rw_runlock_hard()
785 turnstile_chain_lock(&rw->lock_object); in __rw_runlock_hard()
786 v = RW_READ_VALUE(rw); in __rw_runlock_hard()
788 if (__rw_runlock_try(rw, td, &v)) in __rw_runlock_hard()
816 if (!atomic_fcmpset_rel_ptr(&rw->rw_lock, &v, setv)) in __rw_runlock_hard()
818 if (LOCK_LOG_TEST(&rw->lock_object, 0)) in __rw_runlock_hard()
820 __func__, rw); in __rw_runlock_hard()
829 ts = turnstile_lookup(&rw->lock_object); in __rw_runlock_hard()
836 turnstile_chain_unlock(&rw->lock_object); in __rw_runlock_hard()
838 LOCKSTAT_PROFILE_RELEASE_RWLOCK(rw__release, rw, LOCKSTAT_READER); in __rw_runlock_hard()
842 _rw_runlock_cookie_int(struct rwlock *rw LOCK_FILE_LINE_ARG_DEF) in _rw_runlock_cookie_int()
847 KASSERT(rw->rw_lock != RW_DESTROYED, in _rw_runlock_cookie_int()
849 __rw_assert(&rw->rw_lock, RA_RLOCKED, file, line); in _rw_runlock_cookie_int()
850 WITNESS_UNLOCK(&rw->lock_object, 0, file, line); in _rw_runlock_cookie_int()
851 LOCK_LOG_LOCK("RUNLOCK", &rw->lock_object, 0, 0, file, line); in _rw_runlock_cookie_int()
854 v = RW_READ_VALUE(rw); in _rw_runlock_cookie_int()
857 !__rw_runlock_try(rw, td, &v))) in _rw_runlock_cookie_int()
858 __rw_runlock_hard(rw, td, v LOCK_FILE_LINE_ARG); in _rw_runlock_cookie_int()
860 lock_profile_release_lock(&rw->lock_object, false); in _rw_runlock_cookie_int()
868 struct rwlock *rw; in _rw_runlock_cookie() local
870 rw = rwlock2rw(c); in _rw_runlock_cookie()
871 _rw_runlock_cookie_int(rw LOCK_FILE_LINE_ARG); in _rw_runlock_cookie()
900 struct rwlock *rw; in __rw_wlock_hard() local
929 rw = rwlock2rw(c); in __rw_wlock_hard()
934 if (_rw_write_lock_fetch(rw, &v, tid)) in __rw_wlock_hard()
939 all_time -= lockstat_nsecs(&rw->lock_object); in __rw_wlock_hard()
953 v = RW_READ_VALUE(rw); in __rw_wlock_hard()
956 KASSERT(rw->lock_object.lo_flags & LO_RECURSABLE, in __rw_wlock_hard()
958 __func__, rw->lock_object.lo_name, file, line)); in __rw_wlock_hard()
959 rw->rw_recurse++; in __rw_wlock_hard()
960 atomic_set_ptr(&rw->rw_lock, RW_LOCK_WRITER_RECURSED); in __rw_wlock_hard()
961 if (LOCK_LOG_TEST(&rw->lock_object, 0)) in __rw_wlock_hard()
962 CTR2(KTR_LOCK, "%s: %p recursing", __func__, rw); in __rw_wlock_hard()
966 if (LOCK_LOG_TEST(&rw->lock_object, 0)) in __rw_wlock_hard()
968 rw->lock_object.lo_name, (void *)rw->rw_lock, file, line); in __rw_wlock_hard()
979 lock_profile_obtain_lock_failed(&rw->lock_object, false, in __rw_wlock_hard()
982 THREAD_CONTENDS_ON_LOCK(&rw->lock_object); in __rw_wlock_hard()
986 if (_rw_write_lock_fetch(rw, &v, tid)) in __rw_wlock_hard()
996 if (atomic_fcmpset_acq_ptr(&rw->rw_lock, &v, tid)) in __rw_wlock_hard()
1012 if (LOCK_LOG_TEST(&rw->lock_object, 0)) in __rw_wlock_hard()
1014 __func__, rw, owner); in __rw_wlock_hard()
1017 rw->lock_object.lo_name); in __rw_wlock_hard()
1020 v = RW_READ_VALUE(rw); in __rw_wlock_hard()
1036 if (!atomic_fcmpset_ptr(&rw->rw_lock, &v, in __rw_wlock_hard()
1047 rw->lock_object.lo_name); in __rw_wlock_hard()
1051 v = RW_READ_VALUE(rw); in __rw_wlock_hard()
1070 ts = turnstile_trywait(&rw->lock_object); in __rw_wlock_hard()
1071 v = RW_READ_VALUE(rw); in __rw_wlock_hard()
1105 if (atomic_fcmpset_acq_ptr(&rw->rw_lock, &v, tid | setv)) { in __rw_wlock_hard()
1121 if (!atomic_fcmpset_ptr(&rw->rw_lock, &v, setv)) in __rw_wlock_hard()
1135 if (!atomic_fcmpset_ptr(&rw->rw_lock, &v, in __rw_wlock_hard()
1138 if (LOCK_LOG_TEST(&rw->lock_object, 0)) in __rw_wlock_hard()
1140 __func__, rw); in __rw_wlock_hard()
1149 if (LOCK_LOG_TEST(&rw->lock_object, 0)) in __rw_wlock_hard()
1151 rw); in __rw_wlock_hard()
1153 sleep_time -= lockstat_nsecs(&rw->lock_object); in __rw_wlock_hard()
1155 MPASS(owner == rw_owner(rw)); in __rw_wlock_hard()
1158 sleep_time += lockstat_nsecs(&rw->lock_object); in __rw_wlock_hard()
1161 if (LOCK_LOG_TEST(&rw->lock_object, 0)) in __rw_wlock_hard()
1163 __func__, rw); in __rw_wlock_hard()
1167 v = RW_READ_VALUE(rw); in __rw_wlock_hard()
1169 THREAD_CONTENTION_DONE(&rw->lock_object); in __rw_wlock_hard()
1181 all_time += lockstat_nsecs(&rw->lock_object); in __rw_wlock_hard()
1183 LOCKSTAT_RECORD4(rw__block, rw, sleep_time, in __rw_wlock_hard()
1189 LOCKSTAT_RECORD4(rw__spin, rw, all_time - sleep_time, in __rw_wlock_hard()
1194 LOCKSTAT_PROFILE_OBTAIN_RWLOCK_SUCCESS(rw__acquire, rw, contested, in __rw_wlock_hard()
1207 struct rwlock *rw; in __rw_wunlock_hard() local
1216 rw = rwlock2rw(c); in __rw_wunlock_hard()
1218 v = RW_READ_VALUE(rw); in __rw_wunlock_hard()
1221 if (--(rw->rw_recurse) == 0) in __rw_wunlock_hard()
1222 atomic_clear_ptr(&rw->rw_lock, RW_LOCK_WRITER_RECURSED); in __rw_wunlock_hard()
1223 if (LOCK_LOG_TEST(&rw->lock_object, 0)) in __rw_wunlock_hard()
1224 CTR2(KTR_LOCK, "%s: %p unrecursing", __func__, rw); in __rw_wunlock_hard()
1228 LOCKSTAT_PROFILE_RELEASE_RWLOCK(rw__release, rw, LOCKSTAT_WRITER); in __rw_wunlock_hard()
1229 if (v == tid && _rw_write_unlock(rw, tid)) in __rw_wunlock_hard()
1232 KASSERT(rw->rw_lock & (RW_LOCK_READ_WAITERS | RW_LOCK_WRITE_WAITERS), in __rw_wunlock_hard()
1235 if (LOCK_LOG_TEST(&rw->lock_object, 0)) in __rw_wunlock_hard()
1236 CTR2(KTR_LOCK, "%s: %p contested", __func__, rw); in __rw_wunlock_hard()
1238 turnstile_chain_lock(&rw->lock_object); in __rw_wunlock_hard()
1257 v = RW_READ_VALUE(rw); in __rw_wunlock_hard()
1263 atomic_store_rel_ptr(&rw->rw_lock, setv); in __rw_wunlock_hard()
1266 if (LOCK_LOG_TEST(&rw->lock_object, 0)) in __rw_wunlock_hard()
1267 CTR3(KTR_LOCK, "%s: %p waking up %s waiters", __func__, rw, in __rw_wunlock_hard()
1270 ts = turnstile_lookup(&rw->lock_object); in __rw_wunlock_hard()
1274 turnstile_chain_unlock(&rw->lock_object); in __rw_wunlock_hard()
1283 __rw_try_upgrade_int(struct rwlock *rw LOCK_FILE_LINE_ARG_DEF) in __rw_try_upgrade_int()
1292 KASSERT(rw->rw_lock != RW_DESTROYED, in __rw_try_upgrade_int()
1294 __rw_assert(&rw->rw_lock, RA_RLOCKED, file, line); in __rw_try_upgrade_int()
1305 v = RW_READ_VALUE(rw); in __rw_try_upgrade_int()
1310 success = atomic_fcmpset_acq_ptr(&rw->rw_lock, &v, tid); in __rw_try_upgrade_int()
1319 ts = turnstile_trywait(&rw->lock_object); in __rw_try_upgrade_int()
1320 v = RW_READ_VALUE(rw); in __rw_try_upgrade_int()
1333 success = atomic_fcmpset_ptr(&rw->rw_lock, &v, setv); in __rw_try_upgrade_int()
1343 LOCK_LOG_TRY("WUPGRADE", &rw->lock_object, 0, success, file, line); in __rw_try_upgrade_int()
1346 WITNESS_UPGRADE(&rw->lock_object, LOP_EXCLUSIVE | LOP_TRYLOCK, in __rw_try_upgrade_int()
1348 LOCKSTAT_RECORD0(rw__upgrade, rw); in __rw_try_upgrade_int()
1356 struct rwlock *rw; in __rw_try_upgrade() local
1358 rw = rwlock2rw(c); in __rw_try_upgrade()
1359 return (__rw_try_upgrade_int(rw LOCK_FILE_LINE_ARG)); in __rw_try_upgrade()
1366 __rw_downgrade_int(struct rwlock *rw LOCK_FILE_LINE_ARG_DEF) in __rw_downgrade_int()
1375 KASSERT(rw->rw_lock != RW_DESTROYED, in __rw_downgrade_int()
1377 __rw_assert(&rw->rw_lock, RA_WLOCKED | RA_NOTRECURSED, file, line); in __rw_downgrade_int()
1379 if (rw_recursed(rw)) in __rw_downgrade_int()
1383 WITNESS_DOWNGRADE(&rw->lock_object, 0, file, line); in __rw_downgrade_int()
1391 if (atomic_cmpset_rel_ptr(&rw->rw_lock, tid, RW_READERS_LOCK(1))) in __rw_downgrade_int()
1398 turnstile_chain_lock(&rw->lock_object); in __rw_downgrade_int()
1399 v = rw->rw_lock & RW_LOCK_WAITERS; in __rw_downgrade_int()
1408 ts = turnstile_lookup(&rw->lock_object); in __rw_downgrade_int()
1412 atomic_store_rel_ptr(&rw->rw_lock, RW_READERS_LOCK(1) | v); in __rw_downgrade_int()
1422 turnstile_chain_unlock(&rw->lock_object); in __rw_downgrade_int()
1425 LOCK_LOG_LOCK("WDOWNGRADE", &rw->lock_object, 0, 0, file, line); in __rw_downgrade_int()
1426 LOCKSTAT_RECORD0(rw__downgrade, rw); in __rw_downgrade_int()
1432 struct rwlock *rw; in __rw_downgrade() local
1434 rw = rwlock2rw(c); in __rw_downgrade()
1435 __rw_downgrade_int(rw LOCK_FILE_LINE_ARG); in __rw_downgrade()
1451 const struct rwlock *rw; in __rw_assert() local
1456 rw = rwlock2rw(c); in __rw_assert()
1466 witness_assert(&rw->lock_object, what, file, line); in __rw_assert()
1473 if (rw->rw_lock == RW_UNLOCKED || in __rw_assert()
1474 (!(rw->rw_lock & RW_LOCK_READ) && (what & RA_RLOCKED || in __rw_assert()
1475 rw_wowner(rw) != curthread))) in __rw_assert()
1477 rw->lock_object.lo_name, (what & RA_RLOCKED) ? in __rw_assert()
1480 if (!(rw->rw_lock & RW_LOCK_READ) && !(what & RA_RLOCKED)) { in __rw_assert()
1481 if (rw_recursed(rw)) { in __rw_assert()
1484 rw->lock_object.lo_name, file, in __rw_assert()
1488 rw->lock_object.lo_name, file, line); in __rw_assert()
1495 if (rw_wowner(rw) != curthread) in __rw_assert()
1497 rw->lock_object.lo_name, file, line); in __rw_assert()
1498 if (rw_recursed(rw)) { in __rw_assert()
1501 rw->lock_object.lo_name, file, line); in __rw_assert()
1504 rw->lock_object.lo_name, file, line); in __rw_assert()
1508 witness_assert(&rw->lock_object, what, file, line); in __rw_assert()
1514 if (rw_wowner(rw) == curthread) in __rw_assert()
1516 rw->lock_object.lo_name, file, line); in __rw_assert()
1530 const struct rwlock *rw; in db_show_rwlock() local
1533 rw = (const struct rwlock *)lock; in db_show_rwlock()
1536 if (rw->rw_lock == RW_UNLOCKED) in db_show_rwlock()
1538 else if (rw->rw_lock == RW_DESTROYED) { in db_show_rwlock()
1541 } else if (rw->rw_lock & RW_LOCK_READ) in db_show_rwlock()
1543 (uintmax_t)(RW_READERS(rw->rw_lock))); in db_show_rwlock()
1545 td = rw_wowner(rw); in db_show_rwlock()
1548 if (rw_recursed(rw)) in db_show_rwlock()
1549 db_printf(" recursed: %u\n", rw->rw_recurse); in db_show_rwlock()
1552 switch (rw->rw_lock & (RW_LOCK_READ_WAITERS | RW_LOCK_WRITE_WAITERS)) { in db_show_rwlock()