summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authorruki <[email protected]>2022-07-28 22:46:35 +0800
committerruki <[email protected]>2022-07-28 22:46:35 +0800
commit4f7685a8d9df681dd2e47abc6095d896e29a06c3 (patch)
tree4f0541c8bccb2a52d1bcc29bf0ae7f20fdfc6166 /core/src
parent73fa9b4422c42ec89862c440898bb790afd2cf1b (diff)
add meminfo for bsd
Diffstat (limited to 'core/src')
-rw-r--r--core/src/xmake/os/meminfo.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/core/src/xmake/os/meminfo.c b/core/src/xmake/os/meminfo.c
index 8189d698a..48797e4d2 100644
--- a/core/src/xmake/os/meminfo.c
+++ b/core/src/xmake/os/meminfo.c
@@ -39,6 +39,12 @@
# include <sys/sysinfo.h>
#elif defined(TB_CONFIG_OS_WINDOWS)
# include <windows.h>
+#elif defined(TB_CONFIG_OS_BSD)
+# include <sys/types.h>
+# include <sys/sysctl.h>
+# include <sys/vmmeter.h>
+# include <sys/limits.h>
+# include <vm/vm_param.h>
#endif
/* //////////////////////////////////////////////////////////////////////////////////////
@@ -131,6 +137,23 @@ static tb_bool_t xm_os_meminfo_stats(tb_int_t* ptotalsize, tb_int_t* pavailsize)
*pavailsize = (tb_int_t)(statex.ullAvailPhys / (1024 * 1024));
return tb_true;
}
+#elif defined(TB_CONFIG_OS_BSD)
+ struct vmtotal vm_info;
+ int mib[2];
+ mib[0] = CTL_VM;
+ mib[1] = VM_TOTAL;
+ size_t len = sizeof(vm_info);
+ if (sysctl(mib, 2, &vm_info, &len, tb_null, 0) == 0)
+ {
+ tb_trace_i("Total VM Memory: %d\n",vm_info.t_vm);
+ tb_trace_i("Total Real Memory: %d\n",vm_info.t_rm);
+ tb_trace_i("shared real memory: %d\n",vm_info.t_rmshr);
+ tb_trace_i("active shared real memory: %d\n",vm_info.t_armshr);
+ tb_trace_i("Total Free Memory pages: %d\n",vm_info.t_free);
+ *ptotalsize = (tb_int_t)(vm_info.t_vm / (1024 * 1024));
+ *pavailsize = (tb_int_t)(vm_info.t_free / (1024 * 1024));
+ return tb_true;
+ }
#endif
return tb_false;
}