mpstat: do not use /sys to get number of CPUs. /proc should be ok.
authorMarek Polacek <mmpolacek@gmail.com>
Fri, 30 Jul 2010 14:43:11 +0000 (16:43 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Fri, 30 Jul 2010 14:43:11 +0000 (16:43 +0200)
function                                             old     new   delta
get_cpu_nr                                             -     137    +137
mpstat_main                                         1140    1131      -9
get_proc_cpu_nr                                      137       -    -137
get_sys_cpu_nr                                       178       -    -178
------------------------------------------------------------------------------
(add/remove: 1/2 grow/shrink: 0/1 up/down: 137/-324)         Total: -187 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
procps/mpstat.c

index 1199b98dd1afb567007a7046fcba6e249cdec461..7610a68fbbc312b7e6fd1d4fe3f68a8449e220f6 100644 (file)
@@ -815,46 +815,12 @@ static void print_header(struct tm *t)
                uts.sysname, uts.release, uts.nodename, cur_date, uts.machine, G.cpu_nr);
 }
 
-/*
- * Get number of processors in /sys
- */
-static int get_sys_cpu_nr(void)
-{
-       DIR *dir;
-       struct dirent *d;
-       struct stat buf;
-       char line[MAX_PF_NAME];
-       int proc_nr = 0;
-
-       dir = opendir(SYSFS_DEVCPU);
-       if (!dir)
-               return 0;       /* /sys not mounted */
-
-       /* Get current file entry */
-       while ((d = readdir(dir)) != NULL) {
-               if (starts_with_cpu(d->d_name) && isdigit(d->d_name[3])) {
-                       snprintf(line, MAX_PF_NAME, "%s/%s", SYSFS_DEVCPU,
-                                d->d_name);
-                       line[MAX_PF_NAME - 1] = '\0';
-                       /* Get information about file */
-                       if (stat(line, &buf) < 0)
-                               continue;
-                       /* If found 'cpuN', we have one more processor */
-                       if (S_ISDIR(buf.st_mode))
-                               proc_nr++;
-               }
-       }
-
-       closedir(dir);
-       return proc_nr;
-}
-
 /*
  * Get number of processors in /proc/stat
  * Return value '0' means one CPU and non SMP kernel.
  * Otherwise N means N processor(s) and SMP kernel.
  */
-static int get_proc_cpu_nr(void)
+static int get_cpu_nr(void)
 {
        FILE *fp;
        char line[256];
@@ -881,19 +847,6 @@ static int get_proc_cpu_nr(void)
        return proc_nr + 1;
 }
 
-static int get_cpu_nr(void)
-{
-       int n;
-
-       /* Try to use /sys, if possible */
-       n = get_sys_cpu_nr();
-       if (n == 0)
-               /* Otherwise use /proc/stat */
-               n = get_proc_cpu_nr();
-
-       return n;
-}
-
 /*
  * Get number of interrupts available per processor
  */