//go:build linux package host import ( "os" "golang.org/x/sys/unix" ) // readHeadroom reads spare memory from /proc/meminfo and spare disk from // the data directory's filesystem. A reading that fails is left at zero. func readHeadroom(dataDir string, awake int) *edgeHeadroom { h := &edgeHeadroom{Awake: awake} if b, err := os.ReadFile("/proc/meminfo"); err == nil { h.MemFreeMiB = parseMemAvailableMiB(string(b)) } var st unix.Statfs_t if err := unix.Statfs(dataDir, &st); err == nil { h.DiskFreeMiB = int64(st.Bavail) * int64(st.Bsize) / (1 << 20) } return h }