diff options
| author | Michael Abbott <michael.abbott@diamond.ac.uk> | 2009-09-24 04:15:19 -0400 |
|---|---|---|
| committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2009-09-24 04:16:24 -0400 |
| commit | 96830a57de1197519b62af6a4c9ceea556c18c3d (patch) | |
| tree | fc92ae39a4d06e3fb2970e9fc5f6e7a46abf1df0 | |
| parent | 94a8d5caba74211ec76dac80fc6e2d5c391530df (diff) | |
[PATCH] Fix idle time field in /proc/uptime
Git commit 79741dd changes idle cputime accounting, but unfortunately
the /proc/uptime file hasn't caught up. Here the idle time calculation
from /proc/stat is copied over.
Signed-off-by: Michael Abbott <michael.abbott@diamond.ac.uk>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
| -rw-r--r-- | fs/proc/uptime.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/proc/uptime.c b/fs/proc/uptime.c index 0c10a0b3f146..766b1d456050 100644 --- a/fs/proc/uptime.c +++ b/fs/proc/uptime.c | |||
| @@ -4,13 +4,18 @@ | |||
| 4 | #include <linux/sched.h> | 4 | #include <linux/sched.h> |
| 5 | #include <linux/seq_file.h> | 5 | #include <linux/seq_file.h> |
| 6 | #include <linux/time.h> | 6 | #include <linux/time.h> |
| 7 | #include <linux/kernel_stat.h> | ||
| 7 | #include <asm/cputime.h> | 8 | #include <asm/cputime.h> |
| 8 | 9 | ||
| 9 | static int uptime_proc_show(struct seq_file *m, void *v) | 10 | static int uptime_proc_show(struct seq_file *m, void *v) |
| 10 | { | 11 | { |
| 11 | struct timespec uptime; | 12 | struct timespec uptime; |
| 12 | struct timespec idle; | 13 | struct timespec idle; |
| 13 | cputime_t idletime = cputime_add(init_task.utime, init_task.stime); | 14 | int i; |
| 15 | cputime_t idletime = cputime_zero; | ||
| 16 | |||
| 17 | for_each_possible_cpu(i) | ||
| 18 | idletime = cputime64_add(idletime, kstat_cpu(i).cpustat.idle); | ||
| 14 | 19 | ||
| 15 | do_posix_clock_monotonic_gettime(&uptime); | 20 | do_posix_clock_monotonic_gettime(&uptime); |
| 16 | monotonic_to_bootbased(&uptime); | 21 | monotonic_to_bootbased(&uptime); |
