From: Hideo S. <sa...@de...> - 2007-05-10 01:56:24
|
Hi Paul, When I measured a performance with task switching, unexpected delay is issued sometimes. I think that the cause is in idle task so that any interrupt should be blocked in order to halt exclusively. --- arch/sh/kernel/process.c.org Thu May 10 10:34:17 2007 +++ arch/sh/kernel/process.c Thu May 10 10:36:07 2007 @@ -52,18 +52,24 @@ void cpu_idle(void) { /* endless idle loop with no priority at all */ while (1) { void (*idle)(void) = pm_idle; if (!idle) idle = default_idle; - while (!need_resched()) + set_bl_bit(); + for (;;) { + if (need_resched()) { + clear_bl_bit(); + break; + } idle(); + } preempt_enable_no_resched(); schedule(); preempt_disable(); } } void machine_restart(char * __unused) |