SunOS: support memory usage detection

This commit is contained in:
Carter Li
2024-06-17 15:52:45 +08:00
parent 255c6a09ac
commit 72d332772d
2 changed files with 35 additions and 1 deletions
+1 -1
View File
@@ -781,7 +781,7 @@ elseif(SunOS)
src/detection/localip/localip_linux.c
src/detection/gamepad/gamepad_nosupport.c
src/detection/media/media_linux.c
src/detection/memory/memory_nosupport.c
src/detection/memory/memory_sunos.c
src/detection/monitor/monitor_nosupport.c
src/detection/netio/netio_nosupport.c
src/detection/opengl/opengl_linux.c
+34
View File
@@ -0,0 +1,34 @@
#include "memory.h"
#include <kstat.h>
static inline void kstatFreeWrap(kstat_ctl_t** pkc)
{
assert(pkc);
if (*pkc)
kstat_close(*pkc);
}
const char* ffDetectMemory(FFMemoryResult* ram)
{
__attribute__((__cleanup__(kstatFreeWrap))) kstat_ctl_t* kc = kstat_open();
if (!kc)
return "kstat_open() failed";
kstat_t* ks = kstat_lookup(kc, "unix", -1, "system_pages");
if (!ks)
return "kstat_lookup() failed";
if (kstat_read(kc, ks, NULL) < 0)
return "kstat_read() failed";
{
kstat_named_t* kn = kstat_data_lookup(ks, "pagestotal");
ram->bytesTotal = kn->value.ui64 * instance.state.platform.pageSize;
}
{
kstat_named_t* kn = kstat_data_lookup(ks, "pagesfree");
ram->bytesUsed = ram->bytesTotal - kn->value.ui64 * instance.state.platform.pageSize;
}
return NULL;
}