|
@@ -4,6 +4,7 @@
|
|
#include <linux/kernel_stat.h>
|
|
#include <linux/kernel_stat.h>
|
|
#include <linux/static_key.h>
|
|
#include <linux/static_key.h>
|
|
#include <linux/context_tracking.h>
|
|
#include <linux/context_tracking.h>
|
|
|
|
+#include <linux/cputime.h>
|
|
#include "sched.h"
|
|
#include "sched.h"
|
|
#ifdef CONFIG_PARAVIRT
|
|
#ifdef CONFIG_PARAVIRT
|
|
#include <asm/paravirt.h>
|
|
#include <asm/paravirt.h>
|
|
@@ -138,22 +139,22 @@ void account_user_time(struct task_struct *p, u64 cputime)
|
|
* @p: the process that the cpu time gets accounted to
|
|
* @p: the process that the cpu time gets accounted to
|
|
* @cputime: the cpu time spent in virtual machine since the last update
|
|
* @cputime: the cpu time spent in virtual machine since the last update
|
|
*/
|
|
*/
|
|
-void account_guest_time(struct task_struct *p, cputime_t cputime)
|
|
|
|
|
|
+void account_guest_time(struct task_struct *p, u64 cputime)
|
|
{
|
|
{
|
|
u64 *cpustat = kcpustat_this_cpu->cpustat;
|
|
u64 *cpustat = kcpustat_this_cpu->cpustat;
|
|
|
|
|
|
/* Add guest time to process. */
|
|
/* Add guest time to process. */
|
|
- p->utime += cputime_to_nsecs(cputime);
|
|
|
|
- account_group_user_time(p, cputime_to_nsecs(cputime));
|
|
|
|
- p->gtime += cputime_to_nsecs(cputime);
|
|
|
|
|
|
+ p->utime += cputime;
|
|
|
|
+ account_group_user_time(p, cputime);
|
|
|
|
+ p->gtime += cputime;
|
|
|
|
|
|
/* Add guest time to cpustat. */
|
|
/* Add guest time to cpustat. */
|
|
if (task_nice(p) > 0) {
|
|
if (task_nice(p) > 0) {
|
|
- cpustat[CPUTIME_NICE] += cputime_to_nsecs(cputime);
|
|
|
|
- cpustat[CPUTIME_GUEST_NICE] += cputime_to_nsecs(cputime);
|
|
|
|
|
|
+ cpustat[CPUTIME_NICE] += cputime;
|
|
|
|
+ cpustat[CPUTIME_GUEST_NICE] += cputime;
|
|
} else {
|
|
} else {
|
|
- cpustat[CPUTIME_USER] += cputime_to_nsecs(cputime);
|
|
|
|
- cpustat[CPUTIME_GUEST] += cputime_to_nsecs(cputime);
|
|
|
|
|
|
+ cpustat[CPUTIME_USER] += cputime;
|
|
|
|
+ cpustat[CPUTIME_GUEST] += cputime;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -164,14 +165,14 @@ void account_guest_time(struct task_struct *p, cputime_t cputime)
|
|
* @index: pointer to cpustat field that has to be updated
|
|
* @index: pointer to cpustat field that has to be updated
|
|
*/
|
|
*/
|
|
void account_system_index_time(struct task_struct *p,
|
|
void account_system_index_time(struct task_struct *p,
|
|
- cputime_t cputime, enum cpu_usage_stat index)
|
|
|
|
|
|
+ u64 cputime, enum cpu_usage_stat index)
|
|
{
|
|
{
|
|
/* Add system time to process. */
|
|
/* Add system time to process. */
|
|
- p->stime += cputime_to_nsecs(cputime);
|
|
|
|
- account_group_system_time(p, cputime_to_nsecs(cputime));
|
|
|
|
|
|
+ p->stime += cputime;
|
|
|
|
+ account_group_system_time(p, cputime);
|
|
|
|
|
|
/* Add system time to cpustat. */
|
|
/* Add system time to cpustat. */
|
|
- task_group_account_field(p, index, cputime_to_nsecs(cputime));
|
|
|
|
|
|
+ task_group_account_field(p, index, cputime);
|
|
|
|
|
|
/* Account for system time used */
|
|
/* Account for system time used */
|
|
acct_account_cputime(p);
|
|
acct_account_cputime(p);
|
|
@@ -183,8 +184,7 @@ void account_system_index_time(struct task_struct *p,
|
|
* @hardirq_offset: the offset to subtract from hardirq_count()
|
|
* @hardirq_offset: the offset to subtract from hardirq_count()
|
|
* @cputime: the cpu time spent in kernel space since the last update
|
|
* @cputime: the cpu time spent in kernel space since the last update
|
|
*/
|
|
*/
|
|
-void account_system_time(struct task_struct *p, int hardirq_offset,
|
|
|
|
- cputime_t cputime)
|
|
|
|
|
|
+void account_system_time(struct task_struct *p, int hardirq_offset, u64 cputime)
|
|
{
|
|
{
|
|
int index;
|
|
int index;
|
|
|
|
|
|
@@ -388,16 +388,15 @@ static void irqtime_account_process_tick(struct task_struct *p, int user_tick,
|
|
* So, we have to handle it separately here.
|
|
* So, we have to handle it separately here.
|
|
* Also, p->stime needs to be updated for ksoftirqd.
|
|
* Also, p->stime needs to be updated for ksoftirqd.
|
|
*/
|
|
*/
|
|
- account_system_index_time(p, old_cputime, CPUTIME_SOFTIRQ);
|
|
|
|
|
|
+ account_system_index_time(p, cputime, CPUTIME_SOFTIRQ);
|
|
} else if (user_tick) {
|
|
} else if (user_tick) {
|
|
account_user_time(p, cputime);
|
|
account_user_time(p, cputime);
|
|
} else if (p == rq->idle) {
|
|
} else if (p == rq->idle) {
|
|
account_idle_time(cputime);
|
|
account_idle_time(cputime);
|
|
} else if (p->flags & PF_VCPU) { /* System time or guest time */
|
|
} else if (p->flags & PF_VCPU) { /* System time or guest time */
|
|
-
|
|
|
|
- account_guest_time(p, old_cputime);
|
|
|
|
|
|
+ account_guest_time(p, cputime);
|
|
} else {
|
|
} else {
|
|
- account_system_index_time(p, old_cputime, CPUTIME_SYSTEM);
|
|
|
|
|
|
+ account_system_index_time(p, cputime, CPUTIME_SYSTEM);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -502,7 +501,7 @@ void account_process_tick(struct task_struct *p, int user_tick)
|
|
if (user_tick)
|
|
if (user_tick)
|
|
account_user_time(p, cputime);
|
|
account_user_time(p, cputime);
|
|
else if ((p != rq->idle) || (irq_count() != HARDIRQ_OFFSET))
|
|
else if ((p != rq->idle) || (irq_count() != HARDIRQ_OFFSET))
|
|
- account_system_time(p, HARDIRQ_OFFSET, old_cputime);
|
|
|
|
|
|
+ account_system_time(p, HARDIRQ_OFFSET, cputime);
|
|
else
|
|
else
|
|
account_idle_time(cputime);
|
|
account_idle_time(cputime);
|
|
}
|
|
}
|
|
@@ -722,7 +721,7 @@ static void __vtime_account_system(struct task_struct *tsk)
|
|
{
|
|
{
|
|
cputime_t delta_cpu = get_vtime_delta(tsk);
|
|
cputime_t delta_cpu = get_vtime_delta(tsk);
|
|
|
|
|
|
- account_system_time(tsk, irq_count(), delta_cpu);
|
|
|
|
|
|
+ account_system_time(tsk, irq_count(), cputime_to_nsecs(delta_cpu));
|
|
}
|
|
}
|
|
|
|
|
|
void vtime_account_system(struct task_struct *tsk)
|
|
void vtime_account_system(struct task_struct *tsk)
|