1234567891011121314151617181920212223242526272829 |
- package sysinfo
- import (
- "syscall"
- "unsafe"
- )
- // PhysicalMemoryBytes returns the total amount of host memory.
- func PhysicalMemoryBytes() (uint64, error) {
- mib := []int32{6 /* CTL_HW */, 24 /* HW_MEMSIZE */}
- buf := make([]byte, 8)
- bufLen := uintptr(8)
- _, _, e1 := syscall.Syscall6(syscall.SYS___SYSCTL,
- uintptr(unsafe.Pointer(&mib[0])), uintptr(len(mib)),
- uintptr(unsafe.Pointer(&buf[0])), uintptr(unsafe.Pointer(&bufLen)),
- uintptr(0), uintptr(0))
- if e1 != 0 {
- return 0, e1
- }
- if bufLen != 8 {
- return 0, syscall.EIO
- }
- return *(*uint64)(unsafe.Pointer(&buf[0])), nil
- }
|