MCPcopy Create free account
hub / github.com/F-Stack/f-stack / mtx_spin_wait_unlocked

Function mtx_spin_wait_unlocked

freebsd/kern/kern_mutex.c:1253–1276  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1251}
1252
1253void
1254mtx_spin_wait_unlocked(struct mtx *m)
1255{
1256 struct lock_delay_arg lda;
1257
1258 KASSERT(m->mtx_lock != MTX_DESTROYED,
1259 ("%s() of destroyed mutex %p", __func__, m));
1260 KASSERT(LOCK_CLASS(&m->lock_object) == &lock_class_mtx_spin,
1261 ("%s() of sleep mutex %p (%s)", __func__, m,
1262 m->lock_object.lo_name));
1263 KASSERT(!mtx_owned(m), ("%s() waiting on myself on lock %p (%s)", __func__, m,
1264 m->lock_object.lo_name));
1265
1266 lda.spin_cnt = 0;
1267
1268 while (atomic_load_acq_ptr(&m->mtx_lock) != MTX_UNOWNED) {
1269 if (__predict_true(lda.spin_cnt < 10000000)) {
1270 cpu_spinwait();
1271 lda.spin_cnt++;
1272 } else {
1273 _mtx_lock_indefinite_check(m, &lda);
1274 }
1275 }
1276}
1277
1278void
1279mtx_wait_unlocked(struct mtx *m)

Callers 1

proc_reapFunction · 0.85

Calls 1

Tested by

no test coverage detected