diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-06 11:33:28 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-06 11:44:54 -0500 |
commit | 0db49b72bce26341274b74fd968501489a361ae3 (patch) | |
tree | cdb076827aefb38d719d4c42f8ef291c36072fa8 /fs/proc/uptime.c | |
parent | 35b740e4662ef386f0c60e1b60aaf5b44db9914c (diff) | |
parent | 1ac9bc6943edf7d181b4b1cc734981350d4f6bae (diff) |
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
* 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (40 commits)
sched/tracing: Add a new tracepoint for sleeptime
sched: Disable scheduler warnings during oopses
sched: Fix cgroup movement of waking process
sched: Fix cgroup movement of newly created process
sched: Fix cgroup movement of forking process
sched: Remove cfs bandwidth period check in tg_set_cfs_period()
sched: Fix load-balance lock-breaking
sched: Replace all_pinned with a generic flags field
sched: Only queue remote wakeups when crossing cache boundaries
sched: Add missing rcu_dereference() around ->real_parent usage
[S390] fix cputime overflow in uptime_proc_show
[S390] cputime: add sparse checking and cleanup
sched: Mark parent and real_parent as __rcu
sched, nohz: Fix missing RCU read lock
sched, nohz: Set the NOHZ_BALANCE_KICK flag for idle load balancer
sched, nohz: Fix the idle cpu check in nohz_idle_balance
sched: Use jump_labels for sched_feat
sched/accounting: Fix parameter passing in task_group_account_field
sched/accounting: Fix user/system tick double accounting
sched/accounting: Re-use scheduler statistics for the root cgroup
...
Fix up conflicts in
- arch/ia64/include/asm/cputime.h, include/asm-generic/cputime.h
usecs_to_cputime64() vs the sparse cleanups
- kernel/sched/fair.c, kernel/time/tick-sched.c
scheduler changes in multiple branches
Diffstat (limited to 'fs/proc/uptime.c')
-rw-r--r-- | fs/proc/uptime.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/fs/proc/uptime.c b/fs/proc/uptime.c index 766b1d456050..9610ac772d7e 100644 --- a/fs/proc/uptime.c +++ b/fs/proc/uptime.c | |||
@@ -11,15 +11,20 @@ static int uptime_proc_show(struct seq_file *m, void *v) | |||
11 | { | 11 | { |
12 | struct timespec uptime; | 12 | struct timespec uptime; |
13 | struct timespec idle; | 13 | struct timespec idle; |
14 | u64 idletime; | ||
15 | u64 nsec; | ||
16 | u32 rem; | ||
14 | int i; | 17 | int i; |
15 | cputime_t idletime = cputime_zero; | ||
16 | 18 | ||
19 | idletime = 0; | ||
17 | for_each_possible_cpu(i) | 20 | for_each_possible_cpu(i) |
18 | idletime = cputime64_add(idletime, kstat_cpu(i).cpustat.idle); | 21 | idletime += (__force u64) kcpustat_cpu(i).cpustat[CPUTIME_IDLE]; |
19 | 22 | ||
20 | do_posix_clock_monotonic_gettime(&uptime); | 23 | do_posix_clock_monotonic_gettime(&uptime); |
21 | monotonic_to_bootbased(&uptime); | 24 | monotonic_to_bootbased(&uptime); |
22 | cputime_to_timespec(idletime, &idle); | 25 | nsec = cputime64_to_jiffies64(idletime) * TICK_NSEC; |
26 | idle.tv_sec = div_u64_rem(nsec, NSEC_PER_SEC, &rem); | ||
27 | idle.tv_nsec = rem; | ||
23 | seq_printf(m, "%lu.%02lu %lu.%02lu\n", | 28 | seq_printf(m, "%lu.%02lu %lu.%02lu\n", |
24 | (unsigned long) uptime.tv_sec, | 29 | (unsigned long) uptime.tv_sec, |
25 | (uptime.tv_nsec / (NSEC_PER_SEC / 100)), | 30 | (uptime.tv_nsec / (NSEC_PER_SEC / 100)), |