mpstat: do not use /sys to get number of CPUs. /proc should be ok.

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>
This commit is contained in:
Marek Polacek 2010-07-30 16:43:11 +02:00 committed by Denys Vlasenko
parent 3fb4a5e6d8
commit 85a359afab

View 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
*/