Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 69141
b: refs/heads/master
c: 94886b8
h: refs/heads/master
i:
  69139: d92fbcd
v: v3
  • Loading branch information
Laurent Vivier authored and Ingo Molnar committed Oct 15, 2007
1 parent 8ad885e commit 72dd06c
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9ac52315d4cf5f561f36dabaf0720c00d3553162
refs/heads/master: 94886b84b1bcdc95f34f70e7fce407efefe472e1
1 change: 1 addition & 0 deletions trunk/include/linux/sched.h
Original file line number Diff line number Diff line change
Expand Up @@ -1342,6 +1342,7 @@ static inline void put_task_struct(struct task_struct *t)
#define PF_STARTING 0x00000002 /* being created */
#define PF_EXITING 0x00000004 /* getting shut down */
#define PF_EXITPIDONE 0x00000008 /* pi exit done on shut down */
#define PF_VCPU 0x00000010 /* I'm a virtual CPU */
#define PF_FORKNOEXEC 0x00000040 /* forked but didn't exec */
#define PF_SUPERPRIV 0x00000100 /* used super-user privileges */
#define PF_DUMPCORE 0x00000200 /* dumped core */
Expand Down
25 changes: 25 additions & 0 deletions trunk/kernel/sched.c
Original file line number Diff line number Diff line change
Expand Up @@ -3302,6 +3302,25 @@ void account_user_time(struct task_struct *p, cputime_t cputime)
cpustat->user = cputime64_add(cpustat->user, tmp);
}

/*
* Account guest cpu time to a process.
* @p: the process that the cpu time gets accounted to
* @cputime: the cpu time spent in virtual machine since the last update
*/
void account_guest_time(struct task_struct *p, cputime_t cputime)
{
cputime64_t tmp;
struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat;

tmp = cputime_to_cputime64(cputime);

p->utime = cputime_add(p->utime, cputime);
p->gtime = cputime_add(p->gtime, cputime);

cpustat->user = cputime64_add(cpustat->user, tmp);
cpustat->guest = cputime64_add(cpustat->guest, tmp);
}

/*
* Account system cpu time to a process.
* @p: the process that the cpu time gets accounted to
Expand All @@ -3315,6 +3334,12 @@ void account_system_time(struct task_struct *p, int hardirq_offset,
struct rq *rq = this_rq();
cputime64_t tmp;

if (p->flags & PF_VCPU) {
account_guest_time(p, cputime);
p->flags &= ~PF_VCPU;
return;
}

p->stime = cputime_add(p->stime, cputime);

/* Add system time to cpustat. */
Expand Down

0 comments on commit 72dd06c

Please sign in to comment.