diff --git a/common/Darwin/DarwinMisc.cpp b/common/Darwin/DarwinMisc.cpp index 094d5cfc78..ca3801c2d0 100644 --- a/common/Darwin/DarwinMisc.cpp +++ b/common/Darwin/DarwinMisc.cpp @@ -87,17 +87,19 @@ static std::string sysctl_str(int category, int name) return std::string(buf, len > 0 ? len - 1 : 0); } -static std::optional sysctlbyname_u32(const char* name) +template +static std::optional sysctlbyname_T(const char* name) { - u32 output; + T output = 0; size_t output_size = sizeof(output); - if (0 != sysctlbyname(name, &output, &output_size, nullptr, 0)) + if (sysctlbyname(name, &output, &output_size, nullptr, 0) != 0) return std::nullopt; if (output_size != sizeof(output)) { - DevCon.WriteLn("(DarwinMisc) sysctl %s gave unexpected size %zd", name, output_size); + ERROR_LOG("(DarwinMisc) sysctl {} gave unexpected size {}", name, output_size); return std::nullopt; } + return output; } @@ -151,15 +153,15 @@ std::vector DarwinMisc::GetCPUClasses() { std::vector out; - if (std::optional nperflevels = sysctlbyname_u32("hw.nperflevels")) + if (std::optional nperflevels = sysctlbyname_T("hw.nperflevels")) { char name[64]; for (u32 i = 0; i < *nperflevels; i++) { snprintf(name, sizeof(name), "hw.perflevel%u.physicalcpu", i); - std::optional physicalcpu = sysctlbyname_u32(name); + std::optional physicalcpu = sysctlbyname_T(name); snprintf(name, sizeof(name), "hw.perflevel%u.logicalcpu", i); - std::optional logicalcpu = sysctlbyname_u32(name); + std::optional logicalcpu = sysctlbyname_T(name); char levelname[64]; size_t levelname_size = sizeof(levelname); @@ -177,9 +179,9 @@ std::vector DarwinMisc::GetCPUClasses() out.push_back({levelname, *physicalcpu, *logicalcpu}); } } - else if (std::optional physcpu = sysctlbyname_u32("hw.physicalcpu")) + else if (std::optional physcpu = sysctlbyname_T("hw.physicalcpu")) { - out.push_back({"Default", *physcpu, sysctlbyname_u32("hw.logicalcpu").value_or(0)}); + out.push_back({"Default", *physcpu, sysctlbyname_T("hw.logicalcpu").value_or(0)}); } else { @@ -189,17 +191,6 @@ std::vector DarwinMisc::GetCPUClasses() return out; } -template -static std::optional sysctlbyname_T(const char* name) -{ - T output = 0; - size_t output_size = sizeof(output); - if (sysctlbyname(name, &output, &output_size, nullptr, 0) != 0) - return std::nullopt; - - return output; -} - size_t HostSys::GetRuntimePageSize() { return sysctlbyname_T("hw.pagesize").value_or(0);