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:
John Baldwin 2011-02-04 14:16:41 +00:00
parent d28b9e89a9
commit f7488600c0
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=218272

View File

@ -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"));