mirror of
https://github.com/google/benchmark.git
synced 2024-12-02 01:17:00 +00:00
Merge pull request #177 from enh/cpuinfo-arm
Fix ARM /proc/cpuinfo parsing.
This commit is contained in:
commit
cff1541b0c
|
@ -37,7 +37,7 @@ bool ConsoleReporter::ReportContext(const Context& context) {
|
||||||
|
|
||||||
if (context.cpu_scaling_enabled) {
|
if (context.cpu_scaling_enabled) {
|
||||||
std::cerr << "***WARNING*** CPU scaling is enabled, the benchmark "
|
std::cerr << "***WARNING*** CPU scaling is enabled, the benchmark "
|
||||||
"real time measurements may be noisy and will incure extra "
|
"real time measurements may be noisy and will incur extra "
|
||||||
"overhead.\n";
|
"overhead.\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ bool CSVReporter::ReportContext(const Context& context) {
|
||||||
|
|
||||||
if (context.cpu_scaling_enabled) {
|
if (context.cpu_scaling_enabled) {
|
||||||
std::cerr << "***WARNING*** CPU scaling is enabled, the benchmark "
|
std::cerr << "***WARNING*** CPU scaling is enabled, the benchmark "
|
||||||
"real time measurements may be noisy and will incure extra "
|
"real time measurements may be noisy and will incur extra "
|
||||||
"overhead.\n";
|
"overhead.\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -174,12 +174,16 @@ void InitializeSystemInfo() {
|
||||||
if (freqstr[1] != '\0' && *err == '\0' && bogo_clock > 0)
|
if (freqstr[1] != '\0' && *err == '\0' && bogo_clock > 0)
|
||||||
saw_bogo = true;
|
saw_bogo = true;
|
||||||
}
|
}
|
||||||
} else if (strncasecmp(line, "processor", sizeof("processor") - 1) == 0) {
|
} else if (strncmp(line, "processor", sizeof("processor") - 1) == 0) {
|
||||||
|
// The above comparison is case-sensitive because ARM kernels often
|
||||||
|
// include a "Processor" line that tells you about the CPU, distinct
|
||||||
|
// from the usual "processor" lines that give you CPU ids. No current
|
||||||
|
// Linux architecture is using "Processor" for CPU ids.
|
||||||
num_cpus++; // count up every time we see an "processor :" entry
|
num_cpus++; // count up every time we see an "processor :" entry
|
||||||
const char* freqstr = strchr(line, ':');
|
const char* id_str = strchr(line, ':');
|
||||||
if (freqstr) {
|
if (id_str) {
|
||||||
const long cpu_id = strtol(freqstr + 1, &err, 10);
|
const long cpu_id = strtol(id_str + 1, &err, 10);
|
||||||
if (freqstr[1] != '\0' && *err == '\0' && max_cpu_id < cpu_id)
|
if (id_str[1] != '\0' && *err == '\0' && max_cpu_id < cpu_id)
|
||||||
max_cpu_id = cpu_id;
|
max_cpu_id = cpu_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -201,7 +205,7 @@ void InitializeSystemInfo() {
|
||||||
} else {
|
} else {
|
||||||
if ((max_cpu_id + 1) != num_cpus) {
|
if ((max_cpu_id + 1) != num_cpus) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"CPU ID assignments in /proc/cpuinfo seems messed up."
|
"CPU ID assignments in /proc/cpuinfo seem messed up."
|
||||||
" This is usually caused by a bad BIOS.\n");
|
" This is usually caused by a bad BIOS.\n");
|
||||||
}
|
}
|
||||||
cpuinfo_num_cpus = num_cpus;
|
cpuinfo_num_cpus = num_cpus;
|
||||||
|
|
Loading…
Reference in a new issue