summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2010-07-13 12:46:06 +0000
committermav <mav@FreeBSD.org>2010-07-13 12:46:06 +0000
commitb076092fdd67d1ebb8c03e6078349eeadcfc4c0b (patch)
treef82fe6555985b5b15e8e23ff8f8d05602aa750d3
parent26b45a7863e4bb1f2b6b4d65676ab45872a932f4 (diff)
downloadFreeBSD-src-b076092fdd67d1ebb8c03e6078349eeadcfc4c0b.zip
FreeBSD-src-b076092fdd67d1ebb8c03e6078349eeadcfc4c0b.tar.gz
Rise knowledge about curthread->td_intr_frame by one step. Make timer
callback argument really opaque. Not repeat interrupt handler's problem in case somebody will ever need to have both argument and frame.
-rw-r--r--sys/dev/acpica/acpi_hpet.c6
-rw-r--r--sys/x86/isa/atrtc.c7
-rw-r--r--sys/x86/isa/clock.c6
-rw-r--r--sys/x86/x86/local_apic.c3
-rw-r--r--sys/x86/x86/timeevents.c4
5 files changed, 9 insertions, 17 deletions
diff --git a/sys/dev/acpica/acpi_hpet.c b/sys/dev/acpica/acpi_hpet.c
index 3aa6480..95f2b32 100644
--- a/sys/dev/acpica/acpi_hpet.c
+++ b/sys/dev/acpica/acpi_hpet.c
@@ -216,10 +216,8 @@ hpet_intr_single(void *arg)
} else if (t->mode == 2)
t->mode = 0;
mt = (t->pcpu_master < 0) ? t : &sc->t[t->pcpu_master];
- if (mt->et.et_active) {
- mt->et.et_event_cb(&mt->et,
- mt->et.et_arg ? mt->et.et_arg : curthread->td_intr_frame);
- }
+ if (mt->et.et_active)
+ mt->et.et_event_cb(&mt->et, mt->et.et_arg);
return (FILTER_HANDLED);
}
diff --git a/sys/x86/isa/atrtc.c b/sys/x86/isa/atrtc.c
index 0b913c3..5a5ba63 100644
--- a/sys/x86/isa/atrtc.c
+++ b/sys/x86/isa/atrtc.c
@@ -209,11 +209,8 @@ rtc_intr(void *arg)
while (rtcin(RTC_INTR) & RTCIR_PERIOD) {
flag = 1;
- if (sc->et.et_active) {
- sc->et.et_event_cb(&sc->et,
- sc->et.et_arg ? sc->et.et_arg :
- curthread->td_intr_frame);
- }
+ if (sc->et.et_active)
+ sc->et.et_event_cb(&sc->et, sc->et.et_arg);
}
return(flag ? FILTER_HANDLED : FILTER_STRAY);
}
diff --git a/sys/x86/isa/clock.c b/sys/x86/isa/clock.c
index 85d2ff1..6b5fede 100644
--- a/sys/x86/isa/clock.c
+++ b/sys/x86/isa/clock.c
@@ -148,10 +148,8 @@ clkintr(void *arg)
mtx_unlock_spin(&clock_lock);
}
- if (sc && sc->et.et_active) {
- sc->et.et_event_cb(&sc->et,
- sc->et.et_arg ? sc->et.et_arg : curthread->td_intr_frame);
- }
+ if (sc && sc->et.et_active)
+ sc->et.et_event_cb(&sc->et, sc->et.et_arg);
#ifdef DEV_MCA
/* Reset clock interrupt by asserting bit 7 of port 0x61 */
diff --git a/sys/x86/x86/local_apic.c b/sys/x86/x86/local_apic.c
index d1a8439..4364fb1 100644
--- a/sys/x86/x86/local_apic.c
+++ b/sys/x86/x86/local_apic.c
@@ -802,8 +802,7 @@ lapic_handle_timer(struct trapframe *frame)
td = curthread;
oldframe = td->td_intr_frame;
td->td_intr_frame = frame;
- lapic_et.et_event_cb(&lapic_et,
- lapic_et.et_arg ? lapic_et.et_arg : frame);
+ lapic_et.et_event_cb(&lapic_et, lapic_et.et_arg);
td->td_intr_frame = oldframe;
}
critical_exit();
diff --git a/sys/x86/x86/timeevents.c b/sys/x86/x86/timeevents.c
index d204cef..ac4ae83 100644
--- a/sys/x86/x86/timeevents.c
+++ b/sys/x86/x86/timeevents.c
@@ -165,7 +165,7 @@ timer1cb(struct eventtimer *et, void *arg)
}
}
}
- hardclockhandler((struct trapframe *)arg);
+ hardclockhandler(curthread->td_intr_frame);
}
/* timer2 callback. */
@@ -188,7 +188,7 @@ timer2cb(struct eventtimer *et, void *arg)
}
}
}
- statclockhandler((struct trapframe *)arg);
+ statclockhandler(curthread->td_intr_frame);
}
/*
OpenPOWER on IntegriCloud