• T
    timers: Add accounting of non deferrable timers · 99d5f3aa
    Thomas Gleixner 提交于
    The code in get_next_timer_interrupt() is suboptimal as it has to run
    through the cascade to find the next expiring timer. On a completely
    idle core we should only do that when there is an active timer
    enqueued and base->next_timer does not give us a fast answer.
    
    Add accounting of the active timers to the now consolidated
    attach/detach code. I deliberately avoided sanity checks because the
    code is fully symetric and any fiddling with timers w/o using the API
    functions will lead to cute explosions anyway. ulong is big enough
    even on 32bit and if we really run into the situation to have more
    than 1<<32 timers enqueued there, then we are definitely not in a
    state to go idle and run through that code.
    
    This allows us to fix another shortcoming of get_next_timer_interrupt().
    Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Gilad Ben-Yossef <gilad@benyossef.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Link: http://lkml.kernel.org/r/20120525214819.236377028@linutronix.de
    99d5f3aa
timer.c 49.5 KB