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