Home | History | Annotate | Download | only in rumpkern

Lines Matching refs:mtx

48  * Currently available only for mtx/rwlock.
106 #define RUMPMTX(mtx) (*(struct rumpuser_mtx *const *)(mtx))
109 _mutex_init(kmutex_t *mtx, kmutex_type_t type, int ipl,
137 rumpuser_mutex_init((struct rumpuser_mtx **)mtx, ruflags);
139 ALLOCK(mtx, &mutex_spin_lockops, return_address);
141 ALLOCK(mtx, &mutex_adaptive_lockops, return_address);
145 mutex_init(kmutex_t *mtx, kmutex_type_t type, int ipl)
148 _mutex_init(mtx, type, ipl, (uintptr_t)__builtin_return_address(0));
152 mutex_destroy(kmutex_t *mtx)
155 FREELOCK(mtx);
156 rumpuser_mutex_destroy(RUMPMTX(mtx));
160 mutex_enter(kmutex_t *mtx)
163 WANTLOCK(mtx, 0);
164 if (!rumpuser_mutex_spin_p(RUMPMTX(mtx)))
165 BARRIER(mtx, 1);
166 rumpuser_mutex_enter(RUMPMTX(mtx));
167 LOCKED(mtx, false);
171 mutex_spin_enter(kmutex_t *mtx)
174 KASSERT(rumpuser_mutex_spin_p(RUMPMTX(mtx)));
175 WANTLOCK(mtx, 0);
176 rumpuser_mutex_enter_nowrap(RUMPMTX(mtx));
177 LOCKED(mtx, false);
181 mutex_tryenter(kmutex_t *mtx)
185 error = rumpuser_mutex_tryenter(RUMPMTX(mtx));
187 WANTLOCK(mtx, 0);
188 LOCKED(mtx, false);
194 mutex_exit(kmutex_t *mtx)
198 KASSERT(mutex_owned(mtx));
200 UNLOCKED(mtx, false);
201 rumpuser_mutex_exit(RUMPMTX(mtx));
206 mutex_ownable(const kmutex_t *mtx)
210 WANTLOCK(mtx, -1);
216 mutex_owned(const kmutex_t *mtx)
220 rumpuser_mutex_owner(RUMPMTX(mtx), &l);
381 docvwait(kcondvar_t *cv, kmutex_t *mtx, struct timespec *ts)
396 UNLOCKED(mtx, false);
401 if (rumpuser_cv_timedwait(RUMPCV(cv), RUMPMTX(mtx),
405 rumpuser_cv_wait(RUMPCV(cv), RUMPMTX(mtx));
408 LOCKED(mtx, false);
417 mutex_exit(mtx); /* drop and retake later */
430 mutex_enter(mtx);
439 cv_wait(kcondvar_t *cv, kmutex_t *mtx)
444 (void) docvwait(cv, mtx, NULL);
448 cv_wait_sig(kcondvar_t *cv, kmutex_t *mtx)
453 return docvwait(cv, mtx, NULL);
457 cv_timedwait(kcondvar_t *cv, kmutex_t *mtx, int ticks)
464 rv = cv_wait_sig(cv, mtx);
468 rv = docvwait(cv, mtx, &ts);