From 7ee0e8726ed020738335aabe6df30dd9c3556ea9 Mon Sep 17 00:00:00 2001 From: Carter Li Date: Sun, 10 Aug 2025 00:14:16 +0800 Subject: [PATCH] CPU (macOS): use CPUID for freq detection on Intel --- src/detection/cpu/cpu_apple.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/detection/cpu/cpu_apple.c b/src/detection/cpu/cpu_apple.c index 1226131e5..a3607c683 100644 --- a/src/detection/cpu/cpu_apple.c +++ b/src/detection/cpu/cpu_apple.c @@ -72,14 +72,17 @@ static const char* detectFrequency(FFCPUResult* cpu) #else static const char* detectFrequency(FFCPUResult* cpu) { - cpu->frequencyBase = (uint32_t) (ffSysctlGetInt64("hw.cpufrequency", 0) / 1000 / 1000); - cpu->frequencyMax = (uint32_t) (ffSysctlGetInt64("hw.cpufrequency_max", 0) / 1000 / 1000); - if(cpu->frequencyBase == 0) + if (ffCPUDetectSpeedByCpuid(cpu) != NULL) { - unsigned current = 0; - size_t size = sizeof(current); - if (sysctl((int[]){ CTL_HW, HW_CPU_FREQ }, 2, ¤t, &size, NULL, 0) == 0) - cpu->frequencyBase = (uint32_t) (current / 1000 / 1000); + cpu->frequencyBase = (uint32_t) (ffSysctlGetInt64("hw.cpufrequency", 0) / 1000 / 1000); + cpu->frequencyMax = (uint32_t) (ffSysctlGetInt64("hw.cpufrequency_max", 0) / 1000 / 1000); + if(cpu->frequencyBase == 0) + { + unsigned current = 0; + size_t size = sizeof(current); + if (sysctl((int[]){ CTL_HW, HW_CPU_FREQ }, 2, ¤t, &size, NULL, 0) == 0) + cpu->frequencyBase = (uint32_t) (current / 1000 / 1000); + } } return NULL; }