//+build linux

package staros

import "syscall"

// Memory 系统内存信息
func Memory() (MemStatus, error) {
	var mem MemStatus
	ram := new(syscall.Sysinfo_t)
	if err := syscall.Sysinfo(ram); err != nil {
		return mem, err
	}
	mem.All = uint64(ram.Totalram)
	mem.BuffCache = uint64(ram.Bufferram)
	mem.Free = uint64(ram.Freeram)
	mem.Shared = uint64(ram.Sharedram)
	mem.Available = uint64(ram.Freeram + ram.Sharedram + ram.Bufferram)
	mem.SwapAll = uint64(ram.Totalswap)
	mem.SwapFree = uint64(ram.Freeswap)
	mem.SwapUsed = uint64(mem.SwapAll - mem.SwapFree)
	mem.Used = uint64(mem.All - mem.Free)
	return mem, nil
}
