summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa/ipl_funcs.c
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>2000-09-17 16:37:30 +0000
committerbde <bde@FreeBSD.org>2000-09-17 16:37:30 +0000
commit41483dda6f386f6f95a914fff78c848fa42398f9 (patch)
tree1d7482e063d571648f590491896133a42627f340 /sys/i386/isa/ipl_funcs.c
parent62e0e10410c07cfb086acfffd093bbecd52cff35 (diff)
downloadFreeBSD-src-41483dda6f386f6f95a914fff78c848fa42398f9.zip
FreeBSD-src-41483dda6f386f6f95a914fff78c848fa42398f9.tar.gz
Brought back schedsofttty() (SMPng casualty). Didn't bring back the
other schedsoft*() functions since they have never been used. Removed confused comment about not needing these functions. The functions delay scheduling of SWIs until the next hardclock tick. For devices that only deliver a few characters per interrupt, this reduces the number of calls to the scheduler by a large factor (about 115 for each sio port at 115200 bps).
Diffstat (limited to 'sys/i386/isa/ipl_funcs.c')
-rw-r--r--sys/i386/isa/ipl_funcs.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/sys/i386/isa/ipl_funcs.c b/sys/i386/isa/ipl_funcs.c
index 14eb240..1cd6070 100644
--- a/sys/i386/isa/ipl_funcs.c
+++ b/sys/i386/isa/ipl_funcs.c
@@ -50,6 +50,12 @@ void name(void) \
sched_ithd((void *) SOFTINTR); \
}
+#define DO_SETBITS_AND_NO_MORE(name, var, bits) \
+void name(void) \
+{ \
+ atomic_set_int(var, bits); \
+}
+
DO_SETBITS(setdelayed, &spending, loadandclear(&idelayed))
DO_SETBITS(setsoftcamnet,&spending, SWI_CAMNET_PENDING)
DO_SETBITS(setsoftcambio,&spending, SWI_CAMBIO_PENDING)
@@ -59,16 +65,7 @@ DO_SETBITS(setsofttty, &spending, SWI_TTY_PENDING)
DO_SETBITS(setsoftvm, &spending, SWI_VM_PENDING)
DO_SETBITS(setsofttq, &spending, SWI_TQ_PENDING)
-/*
- * We don't need to schedule soft interrupts any more, it happens
- * automatically.
- */
-#define schedsoftcamnet
-#define schedsoftcambio
-#define schedsoftnet
-#define schedsofttty
-#define schedsoftvm
-#define schedsofttq
+DO_SETBITS_AND_NO_MORE(schedsofttty, &idelayed, SWI_TTY_PENDING)
unsigned
softclockpending(void)
OpenPOWER on IntegriCloud