cpu_freq: Port to OpenBSD

In OpenBSD CPU frequency gets fetched using sysctl now.
This commit is contained in:
Aaron Marcher 2018-04-30 13:20:24 +02:00
parent c3ce506b7f
commit 3fe1db8892
2 changed files with 25 additions and 2 deletions

2
README
View File

@ -62,7 +62,7 @@ Porting to OpenBSD is the current goal before thinking about a release.
The following functions are not portable at the moment: The following functions are not portable at the moment:
- wifi_{perc,essid} - wifi_{perc,essid}
- cpu_{freq,perc,iowait} - cpu_{perc,iowait}
- entropy - entropy
- swap_{free,perc,total,used} - swap_{free,perc,total,used}
- battery_{power,state} - battery_{power,state}

View File

@ -1,10 +1,14 @@
/* See LICENSE file for copyright and license details. */ /* See LICENSE file for copyright and license details. */
#if defined(__linux__) #include <errno.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#if defined(__OpenBSD__)
#include <sys/sysctl.h>
#endif
#include "../util.h" #include "../util.h"
#if defined(__linux__)
const char * const char *
cpu_freq(void) cpu_freq(void)
{ {
@ -62,4 +66,23 @@ cpu_iowait(void)
return bprintf("%d", perc); return bprintf("%d", perc);
} }
#elif defined(__OpenBSD__)
const char *
cpu_freq(void)
{
int freq, mib[2];
size_t size;
mib[0] = CTL_HW;
mib[1] = HW_CPUSPEED;
size = sizeof(freq);
if (sysctl(mib, 2, &freq, &size, NULL, 0) == -1) {
fprintf(stderr, "sysctl 'HW_CPUSPEED': %s\n", strerror(errno));
return NULL;
}
return bprintf("%d", freq);
}
#endif #endif