summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_intr.c
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>2006-10-18 04:48:09 +0000
committerbde <bde@FreeBSD.org>2006-10-18 04:48:09 +0000
commit57b90fd011d2563ca80c7ab82d05b1ea024be3f4 (patch)
tree224964ba269f457106a9507f477fbfdbe93ee949 /sys/kern/kern_intr.c
parent90ebfcc21816f68697583b2914951c5906edf261 (diff)
downloadFreeBSD-src-57b90fd011d2563ca80c7ab82d05b1ea024be3f4.zip
FreeBSD-src-57b90fd011d2563ca80c7ab82d05b1ea024be3f4.tar.gz
kern_intr.c:
- Count (scheduling of) software interrupts (SWIs) as SWIs, not as hardware interrupts. - Don't count (scheduling of) delayed SWIs as interrupts at all, since in the delayed case it is expected that there are many more scheduling calls than handling calls. Perhaps all interrupts should be counted only when they are handled, but it is only counts of delayed SWIs that shouldn never be combined with the other counts. subr_trap.c: - Count (handling of) Asynchronous System Traps (ASTs) as traps, not as software interrupts. Before these changes, the counter for SWIs only counted ASTs, and SWIs weren't counted separately, but a subcounter for ASTs alone is less needed than for most other exception sources. 4.4BSD-Lite uses the counters for similar things (actually matching their names) on its main arches (hp300, ..., !i386) where more of the exceptions are in hardware.
Diffstat (limited to 'sys/kern/kern_intr.c')
-rw-r--r--sys/kern/kern_intr.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c
index 7693954..00d512e 100644
--- a/sys/kern/kern_intr.c
+++ b/sys/kern/kern_intr.c
@@ -583,8 +583,6 @@ swi_sched(void *cookie, int flags)
struct intr_event *ie = ih->ih_event;
int error;
- PCPU_LAZY_INC(cnt.v_intr);
-
CTR3(KTR_INTR, "swi_sched: %s %s need=%d", ie->ie_name, ih->ih_name,
ih->ih_need);
@@ -594,7 +592,9 @@ swi_sched(void *cookie, int flags)
* it will execute it the next time it runs.
*/
atomic_store_rel_int(&ih->ih_need, 1);
+
if (!(flags & SWI_DELAY)) {
+ PCPU_LAZY_INC(cnt.v_soft);
error = intr_event_schedule_thread(ie);
KASSERT(error == 0, ("stray software interrupt"));
}
OpenPOWER on IntegriCloud