sched/irqtime: Consolidate irqtime flushing code
The code performing irqtime nsecs stats flushing to kcpustat is roughly the same for hardirq and softirq. So lets consolidate that common code. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Reviewed-by: Rik van Riel <riel@redhat.com> Cc: Eric Dumazet <eric.dumazet@gmail.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Mike Galbraith <efault@gmx.de> Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Wanpeng Li <wanpeng.li@hotmail.com> Link: http://lkml.kernel.org/r/1474849761-12678-6-git-send-email-fweisbec@gmail.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
19d23dbfeb
commit
447976ef4f
1 changed files with 11 additions and 15 deletions
|
@ -70,32 +70,28 @@ void irqtime_account_irq(struct task_struct *curr)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(irqtime_account_irq);
|
||||
|
||||
static cputime_t irqtime_account_hi_update(cputime_t maxtime)
|
||||
static cputime_t irqtime_account_update(u64 irqtime, int idx, cputime_t maxtime)
|
||||
{
|
||||
u64 *cpustat = kcpustat_this_cpu->cpustat;
|
||||
cputime_t irq_cputime;
|
||||
u64 nsecs;
|
||||
|
||||
nsecs = __this_cpu_read(cpu_irqtime.hardirq_time);
|
||||
irq_cputime = nsecs_to_cputime64(nsecs) - cpustat[CPUTIME_IRQ];
|
||||
irq_cputime = nsecs_to_cputime64(irqtime) - cpustat[idx];
|
||||
irq_cputime = min(irq_cputime, maxtime);
|
||||
cpustat[CPUTIME_IRQ] += irq_cputime;
|
||||
cpustat[idx] += irq_cputime;
|
||||
|
||||
return irq_cputime;
|
||||
}
|
||||
|
||||
static cputime_t irqtime_account_hi_update(cputime_t maxtime)
|
||||
{
|
||||
return irqtime_account_update(__this_cpu_read(cpu_irqtime.hardirq_time),
|
||||
CPUTIME_IRQ, maxtime);
|
||||
}
|
||||
|
||||
static cputime_t irqtime_account_si_update(cputime_t maxtime)
|
||||
{
|
||||
u64 *cpustat = kcpustat_this_cpu->cpustat;
|
||||
cputime_t softirq_cputime;
|
||||
u64 nsecs;
|
||||
|
||||
nsecs = __this_cpu_read(cpu_irqtime.softirq_time);
|
||||
softirq_cputime = nsecs_to_cputime64(nsecs) - cpustat[CPUTIME_SOFTIRQ];
|
||||
softirq_cputime = min(softirq_cputime, maxtime);
|
||||
cpustat[CPUTIME_SOFTIRQ] += softirq_cputime;
|
||||
|
||||
return softirq_cputime;
|
||||
return irqtime_account_update(__this_cpu_read(cpu_irqtime.softirq_time),
|
||||
CPUTIME_SOFTIRQ, maxtime);
|
||||
}
|
||||
|
||||
#else /* CONFIG_IRQ_TIME_ACCOUNTING */
|
||||
|
|
Loading…
Reference in a new issue