sched/vtime: Consolidate IRQ time accounting
The 3 architectures implementing CONFIG_VIRT_CPU_ACCOUNTING_NATIVE all have their own version of irq time accounting that dispatch the cputime to the appropriate index: hardirq, softirq, system, idle, guest... from an all-in-one function. Instead of having these ad-hoc versions, move the cputime destination dispatch decision to the core code and leave only the actual per-index cputime accounting to the architecture. Signed-off-by: Frederic Weisbecker <frederic@kernel.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/r/20201202115732.27827-4-frederic@kernel.org
This commit is contained in:
parent
2b91ec9f55
commit
8a6a5920d3
5 changed files with 102 additions and 48 deletions
|
|
@ -417,13 +417,18 @@ void vtime_task_switch(struct task_struct *prev)
|
|||
}
|
||||
# endif
|
||||
|
||||
void vtime_account_irq_enter(struct task_struct *tsk)
|
||||
void vtime_account_irq(struct task_struct *tsk)
|
||||
{
|
||||
if (!IS_ENABLED(CONFIG_HAVE_VIRT_CPU_ACCOUNTING_IDLE) &&
|
||||
!in_interrupt() && is_idle_task(tsk))
|
||||
if (hardirq_count()) {
|
||||
vtime_account_hardirq(tsk);
|
||||
} else if (in_serving_softirq()) {
|
||||
vtime_account_softirq(tsk);
|
||||
} else if (!IS_ENABLED(CONFIG_HAVE_VIRT_CPU_ACCOUNTING_IDLE) &&
|
||||
is_idle_task(tsk)) {
|
||||
vtime_account_idle(tsk);
|
||||
else
|
||||
} else {
|
||||
vtime_account_kernel(tsk);
|
||||
}
|
||||
}
|
||||
|
||||
void cputime_adjust(struct task_cputime *curr, struct prev_cputime *prev,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue