summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2003-05-25 20:08:12 -0700
committerIngo Molnar <mingo@elte.hu>2003-05-25 20:08:12 -0700
commitee2f48bc68a33bd48ac00fdedc7fad5a6b122b64 (patch)
treeb359f87f039be246deec4f598876999324d65d11 /kernel
parent27690cd5f0ca7b96bf49e049f0d0e681878ca83e (diff)
[PATCH] signal latency improvement
This further optimizes the 'kick wakeup' scheduler feature: - do not kick any CPU on UP - no need to mark the target task for reschedule - it's enough to send an interrupt to that CPU, that will initiate a signal processing pass.
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/kernel/sched.c b/kernel/sched.c
index f9dc0a968a61..354936bdc222 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -500,9 +500,12 @@ repeat_lock_task:
resched_task(rq->curr);
}
success = 1;
- } else
- if (unlikely(kick) && task_running(rq, p))
- resched_task(rq->curr);
+ }
+#if CONFIG_SMP
+ else
+ if (unlikely(kick) && task_running(rq, p) && (p->thread_info->cpu != smp_processor_id()))
+ smp_send_reschedule(p->thread_info->cpu);
+#endif
p->state = TASK_RUNNING;
}
task_rq_unlock(rq, &flags);