diff options
| author | Ingo Molnar <mingo@elte.hu> | 2003-05-25 20:08:12 -0700 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2003-05-25 20:08:12 -0700 |
| commit | ee2f48bc68a33bd48ac00fdedc7fad5a6b122b64 (patch) | |
| tree | b359f87f039be246deec4f598876999324d65d11 | |
| parent | 27690cd5f0ca7b96bf49e049f0d0e681878ca83e (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.
| -rw-r--r-- | kernel/sched.c | 9 |
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); |
