On Tue, 14 Jun 2016, Nicolas Pitre wrote:
What about simply this:
void __handle_timings(struct irq_desc *desc)
{
struct irq_timings *timings = this_cpu_ptr(desc->timings);
timings->w_index = (timings->w_index + 1) & IRQ_TIMINGS_MASK;
timings->values[timings->w_index] = local_clock();
}
?
Then you could s/__handle_timings/__record_irq_time/ to better represent
what it does. And both the difference and the summing of squares could
be done upon entering idle instead.
And make it part of the handle_timings() inline to avoid the function call.