]> git.hungrycats.org Git - linux/commitdiff
[PATCH] /proc/stat:btime fix
authorAndrew Morton <akpm@osdl.org>
Wed, 4 Feb 2004 02:48:03 +0000 (18:48 -0800)
committerLinus Torvalds <torvalds@home.osdl.org>
Wed, 4 Feb 2004 02:48:03 +0000 (18:48 -0800)
From: George Anzinger <george@mvista.com>,
      Petri Kaukasoina <kaukasoi@elektroni.ee.tut.fi>

btime in /proc/stat does not stay constant but decreases at a rate of 15
secs/day, because we're assuming that HZ is exactly 100.  Use the correct
adjustments to fix that up.

fs/proc/proc_misc.c

index f07eb3637cfd43694f4f727662de2a52752eb728..dcb20c541addae88d0a75db535990c827f7019c0 100644 (file)
@@ -360,23 +360,12 @@ int show_stat(struct seq_file *p, void *v)
 {
        int i;
        extern unsigned long total_forks;
-       u64 jif;
+       unsigned long jif;
        unsigned int sum = 0, user = 0, nice = 0, system = 0, idle = 0, iowait = 0, irq = 0, softirq = 0;
-       struct timeval now; 
-       unsigned long seq;
 
-       /* Atomically read jiffies and time of day */ 
-       do {
-               seq = read_seqbegin(&xtime_lock);
-
-               jif = get_jiffies_64();
-               do_gettimeofday(&now);
-       } while (read_seqretry(&xtime_lock, seq));
-
-       /* calc # of seconds since boot time */
-       jif -= INITIAL_JIFFIES;
-       jif = ((u64)now.tv_sec * HZ) + (now.tv_usec/(1000000/HZ)) - jif;
-       do_div(jif, HZ);
+       jif = - wall_to_monotonic.tv_sec;
+       if (wall_to_monotonic.tv_nsec)
+               --jif;
 
        for_each_cpu(i) {
                int j;