On 30 September 2012 14:24, Tejun Heo tj@kernel.org wrote:
On Thu, Sep 27, 2012 at 02:34:05PM +0530, Viresh Kumar wrote:
- A cpu has programmed a timer and is IDLE now.
- CPU gets into interrupt handler due to timer and queues a work. As the CPU is currently IDLE, we can queue this work to some other CPU.
I'm still a bit confused, if the CPU is already running the IRQ handler, the CPU is not idle by definition. What am I missing here?
Hi Tejun,
For the scheduler CPU is idle, if all below are true: - current task is idle task - nr_running == 0 - wake_list is empty
And during these conditions, there can be a timer running in background. And when we reach its interrupt handler, then also these conditions hold true and local cpu is idle.
-- Viresh