Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/usermode/usermode Keep processing since we *might* ...
details: https://anonhg.NetBSD.org/src/rev/de9c9951c008
branches: trunk
changeset: 769530:de9c9951c008
user: reinoud <reinoud%NetBSD.org@localhost>
date: Tue Sep 13 10:38:04 2011 +0000
description:
Keep processing since we *might* have missed one during execution
diffstat:
sys/arch/usermode/usermode/intr.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diffs (34 lines):
diff -r ba350f468451 -r de9c9951c008 sys/arch/usermode/usermode/intr.c
--- a/sys/arch/usermode/usermode/intr.c Tue Sep 13 10:33:11 2011 +0000
+++ b/sys/arch/usermode/usermode/intr.c Tue Sep 13 10:38:04 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: intr.c,v 1.5 2011/09/12 12:24:34 reinoud Exp $ */
+/* $NetBSD: intr.c,v 1.6 2011/09/13 10:38:04 reinoud Exp $ */
/*-
* Copyright (c) 2011 Jared D. McNeill <jmcneill%invisible.ca@localhost>
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.5 2011/09/12 12:24:34 reinoud Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.6 2011/09/13 10:38:04 reinoud Exp $");
#include <sys/types.h>
@@ -111,6 +111,7 @@
/* `eat' interrupts that came by until we got back to x */
if (usermode_x > x) {
+restart:
for (y = usermode_x; y >= x; y--) {
while (spl_intr_rd[y] != spl_intr_wr[y]) {
// printf("spl y %d firing\n", y);
@@ -120,6 +121,7 @@
__func__, y, spl_intr_rd[y], spl_intr_wr[y]);
spli->func(spli->arg);
spl_intr_rd[y] = (spl_intr_rd[y] + 1) % MAX_QUEUED_EVENTS;
+ goto restart;
}
}
usermode_x = x;
Home |
Main Index |
Thread Index |
Old Index