aboutsummaryrefslogtreecommitdiff
path: root/sys/sparc64
diff options
context:
space:
mode:
authorMarius Strobl <marius@FreeBSD.org>2012-10-19 13:32:37 +0000
committerMarius Strobl <marius@FreeBSD.org>2012-10-19 13:32:37 +0000
commit6a91a9805432378a743225a2be7731eb3279ce76 (patch)
tree477d44778dd5c0c70278602bf0319bc50adaf4a4 /sys/sparc64
parent6b946662d9df760ce17b9234acfd4ad1c090d92c (diff)
downloadsrc-6a91a9805432378a743225a2be7731eb3279ce76.tar.gz
src-6a91a9805432378a743225a2be7731eb3279ce76.zip
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
Notes
Notes: svn path=/head/; revision=241734
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 daecebeedda8..69062ecb8185 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();
}