Re: intr_event_destroy(9)

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: John Baldwin
Date: Tuesday, October 26, 2010 - 9:46 am

On Tuesday, October 26, 2010 11:55:10 am Matthew Fleming wrote:

No, it's actually on purpose I think as the other bits under notyet destroy 
the thread when the last handler for it goes away.

However, ithread_destroy() does not block in any of 7.x or later:

static void
ithread_destroy(struct intr_thread *ithread)
{
	struct thread *td;

	CTR2(KTR_INTR, "%s: killing %s", __func__, ithread->it_event->ie_name);
	td = ithread->it_thread;
	thread_lock(td);
	ithread->it_flags |= IT_DEAD;
	if (TD_AWAITING_INTR(td)) {
		TD_CLR_IWAIT(td);
		sched_add(td, SRQ_INTR);
	}
	thread_unlock(td);
}

Maybe you have a local change?  If so, you can probably unlock the global 
event_list lock before calling ithread_destroy() (but after the 
TAILQ_REMOVE()) in intr_event_destroy().

-- 
John Baldwin
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
intr_event_destroy(9), Matthew Fleming, (Tue Oct 26, 8:55 am)
Re: intr_event_destroy(9), John Baldwin, (Tue Oct 26, 9:46 am)
Re: intr_event_destroy(9), Matthew Fleming, (Tue Oct 26, 9:56 am)