PERFORCE change 53690 for review
Robert Watson
rwatson at FreeBSD.org
Fri May 28 14:31:25 PDT 2004
http://perforce.freebsd.org/chv.cgi?CH=53690
Change 53690 by rwatson at rwatson_paprika on 2004/05/28 14:30:56
Selective integrate of ithread preemption fix from FreeBSD
CVS HEAD to netperf_socket branch.
Affected files ...
.. //depot/projects/netperf_socket/sys/i386/i386/intr_machdep.c#3 integrate
Differences ...
==== //depot/projects/netperf_socket/sys/i386/i386/intr_machdep.c#3 (text+ko) ====
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/i386/i386/intr_machdep.c,v 1.5 2004/05/04 21:02:56 jhb Exp $
+ * $FreeBSD: src/sys/i386/i386/intr_machdep.c,v 1.6 2004/05/28 17:50:07 jhb Exp $
*/
/*
@@ -183,7 +183,6 @@
if (vector == 0)
clkintr_pending = 1;
- critical_enter();
if (ih != NULL && ih->ih_flags & IH_FAST) {
/*
* Execute fast interrupt handlers directly.
@@ -191,6 +190,7 @@
* with a NULL argument, then we pass it a pointer to
* a trapframe as its argument.
*/
+ critical_enter();
TAILQ_FOREACH(ih, &it->it_handlers, ih_next) {
MPASS(ih->ih_flags & IH_FAST);
CTR3(KTR_INTR, "%s: executing handler %p(%p)",
@@ -204,6 +204,7 @@
}
isrc->is_pic->pic_eoi_source(isrc);
error = 0;
+ critical_exit();
} else {
/*
* For stray and threaded interrupts, we mask and EOI the
@@ -216,7 +217,6 @@
else
error = ithread_schedule(it, !cold);
}
- critical_exit();
if (error == EINVAL) {
atomic_add_long(isrc->is_straycount, 1);
if (*isrc->is_straycount < MAX_STRAY_LOG)
More information about the p4-projects
mailing list