2023-09-13 21:12:35 +00:00
|
|
|
#include <spdlog/spdlog.h>
|
|
|
|
|
2024-02-21 20:47:09 +00:00
|
|
|
#include <sys/sysctl.h>
|
2023-09-13 21:12:35 +00:00
|
|
|
|
|
|
|
#include "modules/cpu_frequency.hpp"
|
|
|
|
|
|
|
|
std::vector<float> waybar::modules::CpuFrequency::parseCpuFrequencies() {
|
2024-02-21 20:47:09 +00:00
|
|
|
std::vector<float> frequencies;
|
|
|
|
char buffer[256];
|
|
|
|
size_t len;
|
|
|
|
int32_t freq;
|
|
|
|
uint32_t i = 0;
|
|
|
|
|
|
|
|
while (true) {
|
|
|
|
len = 4;
|
|
|
|
snprintf(buffer, 256, "dev.cpu.%u.freq", i);
|
|
|
|
if (sysctlbyname(buffer, &freq, &len, NULL, 0) == -1 || len <= 0) break;
|
|
|
|
frequencies.push_back(freq);
|
|
|
|
++i;
|
|
|
|
}
|
|
|
|
|
2023-09-13 21:12:35 +00:00
|
|
|
if (frequencies.empty()) {
|
2024-02-21 20:47:09 +00:00
|
|
|
spdlog::warn("cpu/bsd: parseCpuFrequencies failed, not found in sysctl");
|
2023-09-13 21:12:35 +00:00
|
|
|
frequencies.push_back(NAN);
|
|
|
|
}
|
2024-02-21 20:47:09 +00:00
|
|
|
|
2023-09-13 21:12:35 +00:00
|
|
|
return frequencies;
|
|
|
|
}
|