v / vlib / runtime / used_memory_openbsd.c.v
26 lines · 21 sloc · 644 bytes · a87a4d73b9ab25cfff0822f4e94cf2a2d9e64323
Raw
1module runtime
2
3#include <sys/resource.h>
4
5struct C.rusage {
6 ru_maxrss int
7}
8
9fn C.getrusage(who i32, usage &C.rusage) i32
10
11// used_memory retrieves the current physical memory usage of the process.
12pub fn used_memory() !u64 {
13 page_size := usize(C.sysconf(C._SC_PAGESIZE))
14 c_errno_1 := C.errno
15 if page_size == usize(-1) {
16 return error('used_memory: C.sysconf() return error code = ${c_errno_1}')
17 }
18
19 mut usage := C.rusage{}
20 ret := C.getrusage(C.RUSAGE_SELF, &usage)
21 if ret == -1 {
22 c_errno_2 := C.errno
23 return error('used_memory: C.getrusage() return error code = ${c_errno_2}')
24 }
25 return u64(int_max(1, usage.ru_maxrss)) * 1024
26}
27