mirror of
https://github.com/vlang/v.git
synced 2025-08-03 17:57:59 -04:00
30 lines
646 B
V
30 lines
646 B
V
module runtime
|
|
|
|
#include <sys/sysctl.h>
|
|
#include <uvm/uvmexp.h>
|
|
|
|
struct C.uvmexp {
|
|
pagesize int
|
|
free int
|
|
}
|
|
|
|
fn free_memory_impl() !usize {
|
|
$if cross ? {
|
|
return error('free_memory: not implemented')
|
|
}
|
|
$if !cross ? {
|
|
$if openbsd {
|
|
mib := [C.CTL_VM, C.VM_UVMEXP]!
|
|
mut uvm := C.uvmexp{0, 0}
|
|
mut len := usize(sizeof(C.uvmexp))
|
|
retval := unsafe { C.sysctl(&mib[0], mib.len, &uvm, &len, C.NULL, 0) }
|
|
c_errno := C.errno
|
|
if retval == -1 {
|
|
return error('free_memory: `C.sysctl()` return error code = ${c_errno}')
|
|
}
|
|
return usize(uvm.pagesize) * usize(uvm.free)
|
|
}
|
|
}
|
|
return error('free_memory: not implemented')
|
|
}
|