v / vlib / runtime / free_memory_impl_linux.c.v
23 lines · 22 sloc · 655 bytes · 8c573cf355531bfde029eb912890735f039ef7bf
Raw
1module runtime
2
3fn free_memory_impl() !usize {
4 $if cross ? {
5 return error('free_memory: not implemented')
6 }
7 $if !cross ? {
8 $if linux {
9 page_size := usize(C.sysconf(C._SC_PAGESIZE))
10 c_errno_1 := C.errno
11 if page_size == usize(-1) {
12 return error('free_memory: `C.sysconf(C._SC_PAGESIZE)` return error code = ${c_errno_1}')
13 }
14 av_phys_pages := usize(C.sysconf(C._SC_AVPHYS_PAGES))
15 c_errno_2 := C.errno
16 if av_phys_pages == usize(-1) {
17 return error('free_memory: `C.sysconf(C._SC_AVPHYS_PAGES)` return error code = ${c_errno_2}')
18 }
19 return page_size * av_phys_pages
20 }
21 }
22 return error('free_memory: not implemented')
23}
24