summaryrefslogtreecommitdiffstats
path: root/sys/sparc64
diff options
context:
space:
mode:
authormarius <marius@FreeBSD.org>2012-10-19 13:32:37 +0000
committermarius <marius@FreeBSD.org>2012-10-19 13:32:37 +0000
commit9e47c0d1ffc51b3678f4d204516d4b711f6e2c26 (patch)
tree477d44778dd5c0c70278602bf0319bc50adaf4a4 /sys/sparc64
parentdc8da819413cf3a560ca97194d3a36da6266edd0 (diff)
downloadFreeBSD-src-9e47c0d1ffc51b3678f4d204516d4b711f6e2c26.zip
FreeBSD-src-9e47c0d1ffc51b3678f4d204516d4b711f6e2c26.tar.gz
Let SCHED_ULE give affinity to the CPU the tick interrupt triggered on
when running tick_process(), similarly to what the x86 equivalents of this function do, however employing the less racy sequence also used in intr_event_handle(). MFC after: 3 days
Diffstat (limited to 'sys/sparc64')
-rw-r--r--sys/sparc64/sparc64/tick.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/sparc64/sparc64/tick.c b/sys/sparc64/sparc64/tick.c
index daecebe..69062ec 100644
--- a/sys/sparc64/sparc64/tick.c
+++ b/sys/sparc64/sparc64/tick.c
@@ -245,14 +245,16 @@ tick_process(struct trapframe *tf)
struct trapframe *oldframe;
struct thread *td;
+ td = curthread;
+ td->td_intr_nesting_level++;
critical_enter();
if (tick_et.et_active) {
- td = curthread;
oldframe = td->td_intr_frame;
td->td_intr_frame = tf;
tick_et.et_event_cb(&tick_et, tick_et.et_arg);
td->td_intr_frame = oldframe;
}
+ td->td_intr_nesting_level--;
critical_exit();
}
OpenPOWER on IntegriCloud