1 // +build darwin freebsd openbsd dragonfly netbsd 2 3 package memory 4 5 import ( 6 "syscall" 7 "unsafe" 8 ) 9 10 func sysctlUint64(name string) (uint64, error) { 11 s, err := syscall.Sysctl(name) 12 if err != nil { 13 return 0, err 14 } 15 // hack because the string conversion above drops a \0 16 b := []byte(s) 17 if len(b) < 8 { 18 b = append(b, 0) 19 } 20 return *(*uint64)(unsafe.Pointer(&b[0])), nil 21 } 22