Loading include/linux/kernel_stat.h +1 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ enum cpu_usage_stat { struct kernel_cpustat { u64 cpustat[NR_STATS]; u64 softirq_no_ksoftirqd; }; struct kernel_stat { Loading kernel/sched/cputime.c +8 −1 Original line number Diff line number Diff line Loading @@ -84,12 +84,19 @@ EXPORT_SYMBOL_GPL(irqtime_account_irq); static cputime_t irqtime_account_update(u64 irqtime, int idx, cputime_t maxtime) { u64 *cpustat = kcpustat_this_cpu->cpustat; u64 base = cpustat[idx]; cputime_t irq_cputime; irq_cputime = nsecs_to_cputime64(irqtime) - cpustat[idx]; if (idx == CPUTIME_SOFTIRQ) base = kcpustat_this_cpu->softirq_no_ksoftirqd; irq_cputime = nsecs_to_cputime64(irqtime) - base; irq_cputime = min(irq_cputime, maxtime); cpustat[idx] += irq_cputime; if (idx == CPUTIME_SOFTIRQ) kcpustat_this_cpu->softirq_no_ksoftirqd += irq_cputime; return irq_cputime; } Loading Loading
include/linux/kernel_stat.h +1 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ enum cpu_usage_stat { struct kernel_cpustat { u64 cpustat[NR_STATS]; u64 softirq_no_ksoftirqd; }; struct kernel_stat { Loading
kernel/sched/cputime.c +8 −1 Original line number Diff line number Diff line Loading @@ -84,12 +84,19 @@ EXPORT_SYMBOL_GPL(irqtime_account_irq); static cputime_t irqtime_account_update(u64 irqtime, int idx, cputime_t maxtime) { u64 *cpustat = kcpustat_this_cpu->cpustat; u64 base = cpustat[idx]; cputime_t irq_cputime; irq_cputime = nsecs_to_cputime64(irqtime) - cpustat[idx]; if (idx == CPUTIME_SOFTIRQ) base = kcpustat_this_cpu->softirq_no_ksoftirqd; irq_cputime = nsecs_to_cputime64(irqtime) - base; irq_cputime = min(irq_cputime, maxtime); cpustat[idx] += irq_cputime; if (idx == CPUTIME_SOFTIRQ) kcpustat_this_cpu->softirq_no_ksoftirqd += irq_cputime; return irq_cputime; } Loading