30 lines
660 B
Go
30 lines
660 B
Go
// +build linux
|
|
|
|
package memory
|
|
|
|
import "syscall"
|
|
|
|
func sysTotalMemory() uint64 {
|
|
in := &syscall.Sysinfo_t{}
|
|
err := syscall.Sysinfo(in)
|
|
if err != nil {
|
|
return 0
|
|
}
|
|
// If this is a 32-bit system, then these fields are
|
|
// uint32 instead of uint64.
|
|
// So we always convert to uint64 to match signature.
|
|
return uint64(in.Totalram) * uint64(in.Unit)
|
|
}
|
|
|
|
func sysFreeMemory() uint64 {
|
|
in := &syscall.Sysinfo_t{}
|
|
err := syscall.Sysinfo(in)
|
|
if err != nil {
|
|
return 0
|
|
}
|
|
// If this is a 32-bit system, then these fields are
|
|
// uint32 instead of uint64.
|
|
// So we always convert to uint64 to match signature.
|
|
return uint64(in.Freeram) * uint64(in.Unit)
|
|
}
|