summaryrefslogtreecommitdiffhomepage
path: root/util/sysresources/memory_linux.go
blob: 3885a8aa6c66ebd16bdae53762658221d52e55b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Copyright (c) Tailscale Inc & contributors
// SPDX-License-Identifier: BSD-3-Clause

//go:build linux

package sysresources

import "golang.org/x/sys/unix"

func totalMemoryImpl() uint64 {
	var info unix.Sysinfo_t

	if err := unix.Sysinfo(&info); err != nil {
		return 0
	}

	// uint64 casts are required since these might be uint32s
	return uint64(info.Totalram) * uint64(info.Unit)
}