hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/fs/proc/uptime.c
....@@ -5,22 +5,29 @@
55 #include <linux/sched.h>
66 #include <linux/seq_file.h>
77 #include <linux/time.h>
8
+#include <linux/time_namespace.h>
89 #include <linux/kernel_stat.h>
910
1011 static int uptime_proc_show(struct seq_file *m, void *v)
1112 {
1213 struct timespec64 uptime;
1314 struct timespec64 idle;
14
- u64 nsec;
15
+ u64 idle_nsec;
1516 u32 rem;
1617 int i;
1718
18
- nsec = 0;
19
- for_each_possible_cpu(i)
20
- nsec += (__force u64) kcpustat_cpu(i).cpustat[CPUTIME_IDLE];
19
+ idle_nsec = 0;
20
+ for_each_possible_cpu(i) {
21
+ struct kernel_cpustat kcs;
22
+
23
+ kcpustat_cpu_fetch(&kcs, i);
24
+ idle_nsec += get_idle_time(&kcs, i);
25
+ }
2126
2227 ktime_get_boottime_ts64(&uptime);
23
- idle.tv_sec = div_u64_rem(nsec, NSEC_PER_SEC, &rem);
28
+ timens_add_boottime(&uptime);
29
+
30
+ idle.tv_sec = div_u64_rem(idle_nsec, NSEC_PER_SEC, &rem);
2431 idle.tv_nsec = rem;
2532 seq_printf(m, "%lu.%02lu %lu.%02lu\n",
2633 (unsigned long) uptime.tv_sec,