memsysctl.go raw

   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