1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
/*
* Copyright (c) 2023. Nydus Developers. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*/
package sysinfo
import (
"sync"
"syscall"
)
var (
sysinfo *syscall.Sysinfo_t
sysinfoOnce sync.Once
sysinfoErr error
)
func GetSysinfo() {
var info syscall.Sysinfo_t
err := syscall.Sysinfo(&info)
if err != nil {
sysinfoErr = err
return
}
sysinfo = &info
sysinfoErr = nil
}
func GetTotalMemoryBytes() (int, error) {
sysinfoOnce.Do(GetSysinfo)
if sysinfo == nil {
return 0, sysinfoErr
}
return int(sysinfo.Totalram), nil
}
|