runtime: add free_memory/0 implementation for FreeBSD too (fix #23581) (#23594)

This commit is contained in:
kbkpbot 2025-01-30 05:38:14 +08:00 committed by GitHub
parent 1d700bef99
commit 7549020d1f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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
}