Laurent Vivier wrote:
This is another way to compute guest time... I remove the "account modifiers"
mechanism and call directly account_guest_time() from account_system_time().
account_system_time() computes user, system and guest times according value
accumulated in vtime (a ktime_t) in task_struct by the virtual machine.
quoted hunk
@@ -3246,6 +3277,10 @@
struct rq *rq = this_rq();
cputime64_t tmp;
+#ifdef CONFIG_GUEST_ACCOUNTING
+ cputime = account_guest_time(p, cputime);
+#endif
+
p->stime = cputime_add(p->stime, cputime);
/* Add system time to cpustat. */
In order to reduce the impact on whatever function this is in (use diff
-p please), you can always have a definition of account_guest_time:
#else
static cputime_t account_guest_time(struct task_struct *p, cputime_t cputime)
{
return cputime;
}
#endif
This way the #ifdef/#endif is not necessary when calling it.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.