From 42d2ab4803b423ef42ef98bc3e383b2fe25508f9 Mon Sep 17 00:00:00 2001 From: Brad Smith Date: Mon, 3 Feb 2025 19:00:56 -0500 Subject: [PATCH] Retrieve the number of online CPUs on OpenBSD and NetBSD --- src/sysinfo.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/sysinfo.cc b/src/sysinfo.cc index eddd430e68..f44f7d3b33 100644 --- a/src/sysinfo.cc +++ b/src/sysinfo.cc @@ -153,11 +153,11 @@ ValueUnion GetSysctlImp(std::string const& name) { int mib[2]; mib[0] = CTL_HW; - if ((name == "hw.ncpu") || (name == "hw.cpuspeed")) { + if ((name == "hw.ncpuonline") || (name == "hw.cpuspeed")) { ValueUnion buff(sizeof(int)); - if (name == "hw.ncpu") { - mib[1] = HW_NCPU; + if (name == "hw.ncpuonline") { + mib[1] = HW_NCPUONLINE; } else { mib[1] = HW_CPUSPEED; } @@ -482,7 +482,11 @@ std::string GetSystemName() { int GetNumCPUsImpl() { #ifdef BENCHMARK_HAS_SYSCTL int num_cpu = -1; +#ifdef HW_NCPUONLINE + if (GetSysctl("hw.ncpuonline", &num_cpu)) return num_cpu; +#else if (GetSysctl("hw.ncpu", &num_cpu)) return num_cpu; +#endif PrintErrorAndDie("Err: ", strerror(errno)); #elif defined(BENCHMARK_OS_WINDOWS) SYSTEM_INFO sysinfo;