Always assert that the turnstile chain lock is held in turnstile_wait()
and remove a duplicate hash lookup. MFC after: 1 week
This commit is contained in:
parent
d28b9e89a9
commit
f7488600c0
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=218272
@ -685,8 +685,8 @@ turnstile_wait(struct turnstile *ts, struct thread *owner, int queue)
|
||||
* turnstile already in use by this lock.
|
||||
*/
|
||||
tc = TC_LOOKUP(ts->ts_lockobj);
|
||||
mtx_assert(&tc->tc_lock, MA_OWNED);
|
||||
if (ts == td->td_turnstile) {
|
||||
mtx_assert(&tc->tc_lock, MA_OWNED);
|
||||
#ifdef TURNSTILE_PROFILING
|
||||
tc->tc_depth++;
|
||||
if (tc->tc_depth > tc->tc_max_depth) {
|
||||
@ -695,7 +695,6 @@ turnstile_wait(struct turnstile *ts, struct thread *owner, int queue)
|
||||
turnstile_max_depth = tc->tc_max_depth;
|
||||
}
|
||||
#endif
|
||||
tc = TC_LOOKUP(ts->ts_lockobj);
|
||||
LIST_INSERT_HEAD(&tc->tc_turnstiles, ts, ts_hash);
|
||||
KASSERT(TAILQ_EMPTY(&ts->ts_pending),
|
||||
("thread's turnstile has pending threads"));
|
||||
|
Loading…
Reference in New Issue
Block a user