summaryrefslogtreecommitdiff
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
parent73fa9b4422c42ec89862c440898bb790afd2cf1b (diff)
add meminfo for bsd
-rw-r--r--.github/workflows/freebsd.yml4
-rw-r--r--core/src/xmake/os/meminfo.c23
2 files changed, 26 insertions, 1 deletions
diff --git a/.github/workflows/freebsd.yml b/.github/workflows/freebsd.yml
index e9c55944d..83a88f0c3 100644
--- a/.github/workflows/freebsd.yml
+++ b/.github/workflows/freebsd.yml
@@ -31,6 +31,8 @@ jobs:
gmake install
export XMAKE_ROOT=y
xrepo --version
- xmake lua -v -D tests/run.lua
+ dmesg | grep -i memory
+ xmake l os.meminfo
+ #xmake lua -v -D tests/run.lua
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;
}