diff --git a/collector/cpu_dragonfly.go b/collector/cpu_dragonfly.go index 2440f2a..b1a9785 100644 --- a/collector/cpu_dragonfly.go +++ b/collector/cpu_dragonfly.go @@ -63,16 +63,16 @@ getCPUTimes(char **cputime) { return -1; } - // Retrieve clockrate - struct clockinfo clockrate; - size_t clockrate_size = sizeof(clockrate); - if (sysctl(mib_kern_clockrate, mib_kern_clockrate_len, &clockrate, &clockrate_size, NULL, 0) == -1 || - sizeof(clockrate) != clockrate_size) { + // The bump on each statclock is + // ((cur_systimer - prev_systimer) * systimer_freq) >> 32 + // where + // systimer_freq = sysctl kern.cputimer.freq + long freq; + len = sizeof(freq); + if (sysctlbyname("kern.cputimer.freq", &freq, &len, NULL, 0)) { return -1; } - long freq = clockrate.stathz > 0 ? clockrate.stathz : clockrate.hz; - // Get the cpu times. struct kinfo_cputime cp_t[ncpu]; bzero(cp_t, sizeof(struct kinfo_cputime)*ncpu);