diff options
author | Marius Strobl <marius@FreeBSD.org> | 2012-10-19 13:32:37 +0000 |
---|---|---|
committer | Marius Strobl <marius@FreeBSD.org> | 2012-10-19 13:32:37 +0000 |
commit | 6a91a9805432378a743225a2be7731eb3279ce76 (patch) | |
tree | 477d44778dd5c0c70278602bf0319bc50adaf4a4 /sys/sparc64 | |
parent | 6b946662d9df760ce17b9234acfd4ad1c090d92c (diff) | |
download | src-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.c | 4 |
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(); } |