github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/utils/memory/memsysctl.go (about)

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