|
@@ -3687,7 +3687,36 @@ void account_system_time(struct task_struct *p, int hardirq_offset,
|
|
|
__account_system_time(p, cputime, cputime_scaled, target_cputime64);
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * Account for involuntary wait time.
|
|
|
+ * @cputime: the cpu time spent in involuntary wait
|
|
|
+ */
|
|
|
+void account_steal_time(cputime_t cputime)
|
|
|
+{
|
|
|
+ struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat;
|
|
|
+ cputime64_t cputime64 = cputime_to_cputime64(cputime);
|
|
|
+
|
|
|
+ cpustat->steal = cputime64_add(cpustat->steal, cputime64);
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * Account for idle time.
|
|
|
+ * @cputime: the cpu time spent in idle wait
|
|
|
+ */
|
|
|
+void account_idle_time(cputime_t cputime)
|
|
|
+{
|
|
|
+ struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat;
|
|
|
+ cputime64_t cputime64 = cputime_to_cputime64(cputime);
|
|
|
+ struct rq *rq = this_rq();
|
|
|
+
|
|
|
+ if (atomic_read(&rq->nr_iowait) > 0)
|
|
|
+ cpustat->iowait = cputime64_add(cpustat->iowait, cputime64);
|
|
|
+ else
|
|
|
+ cpustat->idle = cputime64_add(cpustat->idle, cputime64);
|
|
|
+}
|
|
|
+
|
|
|
#ifndef CONFIG_VIRT_CPU_ACCOUNTING
|
|
|
+
|
|
|
#ifdef CONFIG_IRQ_TIME_ACCOUNTING
|
|
|
/*
|
|
|
* Account a tick to a process and cpustat
|
|
@@ -3749,42 +3778,11 @@ static void irqtime_account_idle_ticks(int ticks)
|
|
|
for (i = 0; i < ticks; i++)
|
|
|
irqtime_account_process_tick(current, 0, rq);
|
|
|
}
|
|
|
-#else
|
|
|
+#else /* CONFIG_IRQ_TIME_ACCOUNTING */
|
|
|
static void irqtime_account_idle_ticks(int ticks) {}
|
|
|
static void irqtime_account_process_tick(struct task_struct *p, int user_tick,
|
|
|
struct rq *rq) {}
|
|
|
-#endif
|
|
|
-#endif /* !CONFIG_VIRT_CPU_ACCOUNTING */
|
|
|
-
|
|
|
-/*
|
|
|
- * Account for involuntary wait time.
|
|
|
- * @steal: the cpu time spent in involuntary wait
|
|
|
- */
|
|
|
-void account_steal_time(cputime_t cputime)
|
|
|
-{
|
|
|
- struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat;
|
|
|
- cputime64_t cputime64 = cputime_to_cputime64(cputime);
|
|
|
-
|
|
|
- cpustat->steal = cputime64_add(cpustat->steal, cputime64);
|
|
|
-}
|
|
|
-
|
|
|
-/*
|
|
|
- * Account for idle time.
|
|
|
- * @cputime: the cpu time spent in idle wait
|
|
|
- */
|
|
|
-void account_idle_time(cputime_t cputime)
|
|
|
-{
|
|
|
- struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat;
|
|
|
- cputime64_t cputime64 = cputime_to_cputime64(cputime);
|
|
|
- struct rq *rq = this_rq();
|
|
|
-
|
|
|
- if (atomic_read(&rq->nr_iowait) > 0)
|
|
|
- cpustat->iowait = cputime64_add(cpustat->iowait, cputime64);
|
|
|
- else
|
|
|
- cpustat->idle = cputime64_add(cpustat->idle, cputime64);
|
|
|
-}
|
|
|
-
|
|
|
-#ifndef CONFIG_VIRT_CPU_ACCOUNTING
|
|
|
+#endif /* CONFIG_IRQ_TIME_ACCOUNTING */
|
|
|
|
|
|
/*
|
|
|
* Account a single tick of cpu time.
|