From 7549020d1f3d3d65f7b8cce833f158247fa4527b Mon Sep 17 00:00:00 2001 From: kbkpbot Date: Thu, 30 Jan 2025 05:38:14 +0800 Subject: [PATCH] runtime: add free_memory/0 implementation for FreeBSD too (fix #23581) (#23594) --- vlib/runtime/free_memory_impl_freebsd.c.v | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 vlib/runtime/free_memory_impl_freebsd.c.v diff --git a/vlib/runtime/free_memory_impl_freebsd.c.v b/vlib/runtime/free_memory_impl_freebsd.c.v new file mode 100644 index 0000000000..0286e87918 --- /dev/null +++ b/vlib/runtime/free_memory_impl_freebsd.c.v @@ -0,0 +1,22 @@ +module runtime + +fn C.sysctlnametomib(name charptr, mib &int, len &usize) int + +fn free_memory_impl() usize { + $if cross ? { + return 1 + } + $if !cross ? { + $if freebsd { + page_size := usize(C.sysconf(C._SC_PAGESIZE)) + mut mib := [4]int{} + mut len := usize(4) + unsafe { C.sysctlnametomib(c'vm.stats.vm.v_free_count', &mib[0], &len) } + mut free_pages := int(0) + bufsize := usize(4) + unsafe { C.sysctl(&mib[0], mib.len, &free_pages, &bufsize, 0, 0) } + return page_size * usize(free_pages) + } + } + return 1 +}