summaryrefslogtreecommitdiffstats
path: root/sys/x86
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 /sys/x86
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.
Diffstat (limited to 'sys/x86')
-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
4 files changed, 7 insertions, 13 deletions
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