summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorErik Kundiman <erik@megapahit.org>2023-12-26 12:11:15 +0800
committerErik Kundiman <erik@megapahit.org>2024-06-05 19:16:57 +0800
commit268281a5705b277eb0b1c9d5f3e63fc0d637c261 (patch)
tree9da58f12106537d4685997bce82b1170a368f10e /indra
parent83e80d79672210355d0291e30bd89bd03c672ca6 (diff)
An alternative in getting CPU freq on M-series
This solution was retrieved from https://listman.redhat.com/archives/libvir-list/2022-February/228217.html sysctl hw.cpufrequency would result as empty on Apple Silicon (at least) M1, when run natively. Ironically (and that's why it's been working with viewers relying on Rosetta 2), arch -x86_64 /bin/bash -c 'sysctl hw.cpufrequency' run on an Apple Silicon would result in the correct number.
Diffstat (limited to 'indra')
-rw-r--r--indra/llcommon/llprocessor.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp
index 9d53b9be35..f07a32c179 100644
--- a/indra/llcommon/llprocessor.cpp
+++ b/indra/llcommon/llprocessor.cpp
@@ -637,7 +637,15 @@ public:
LLProcessorInfoDarwinImpl()
{
getCPUIDInfo();
+#ifdef __arm64__
+ auto frequency = getSysctlInt64("hw.tbfrequency");
+ struct clockinfo clockrate;
+ auto clockrate_len = sizeof(clockrate);
+ if (!sysctlbyname("kern.clockrate", &clockrate, &clockrate_len, NULL, 0))
+ frequency *= clockrate.hz;
+#else
uint64_t frequency = getSysctlInt64("hw.cpufrequency");
+#endif
setInfo(eFrequency, (F64)frequency / (F64)1000000);
}