Skip to content

Commit 7549020

Browse files
authored
runtime: add free_memory/0 implementation for FreeBSD too (fix #23581) (#23594)
1 parent 1d700be commit 7549020

1 file changed

Lines changed: 22 additions & 0 deletions

File tree

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
module runtime
2+
3+
fn C.sysctlnametomib(name charptr, mib &int, len &usize) int
4+
5+
fn free_memory_impl() usize {
6+
$if cross ? {
7+
return 1
8+
}
9+
$if !cross ? {
10+
$if freebsd {
11+
page_size := usize(C.sysconf(C._SC_PAGESIZE))
12+
mut mib := [4]int{}
13+
mut len := usize(4)
14+
unsafe { C.sysctlnametomib(c'vm.stats.vm.v_free_count', &mib[0], &len) }
15+
mut free_pages := int(0)
16+
bufsize := usize(4)
17+
unsafe { C.sysctl(&mib[0], mib.len, &free_pages, &bufsize, 0, 0) }
18+
return page_size * usize(free_pages)
19+
}
20+
}
21+
return 1
22+
}

0 commit comments

Comments
 (0)