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:
parent
3fb4a5e6d8
commit
85a359afab
@ -815,46 +815,12 @@ static void print_header(struct tm *t)
|
|||||||
uts.sysname, uts.release, uts.nodename, cur_date, uts.machine, G.cpu_nr);
|
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
|
* Get number of processors in /proc/stat
|
||||||
* Return value '0' means one CPU and non SMP kernel.
|
* Return value '0' means one CPU and non SMP kernel.
|
||||||
* Otherwise N means N processor(s) and 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;
|
FILE *fp;
|
||||||
char line[256];
|
char line[256];
|
||||||
@ -881,19 +847,6 @@ static int get_proc_cpu_nr(void)
|
|||||||
return proc_nr + 1;
|
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
|
* Get number of interrupts available per processor
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user