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)
|
||
|
}
|