Path: blob/main/benchmarks/libcpucycles/files/patch-cpucycles_wrapper.c
26924 views
--- cpucycles/wrapper.c.orig 2025-12-26 09:44:50 UTC1+++ cpucycles/wrapper.c2@@ -18,6 +18,12 @@3#include <inttypes.h>4#include <signal.h>5#include <setjmp.h>6+7+#ifdef __FreeBSD__8+#include <sched.h>9+#include <sys/sysctl.h>10+#endif11+12#include "cpucycles.h"13#include "cpucycles_internal.h"1415@@ -83,6 +89,21 @@ static double osfreq(void)16if (s > 0) return result;17}1819+#ifdef __FreeBSD__20+ {21+ int freq;22+ size_t len = sizeof freq;23+ char *freqctl;24+25+ if (asprintf(&freqctl, "dev.cpu.%d.freq", sched_getcpu())) {26+ if (sysctlbyname(freqctl, &freq, &len, NULL, 0) == 0) {27+ free(freqctl);28+ return 1e6 * freq;29+ } else30+ free(freqctl);31+ }32+ }33+#else34f = fopen("/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed", "r");35if (f) {36s = fscanf(f,"%lf",&result);37@@ -165,6 +186,7 @@ static double osfreq(void)38pclose(f);39if (result) return 1000000.0 * result;40}41+#endif /* defined(__FreeBSD__) */4243x = getenv("cpucyclespersecond");44if (x) {454647