github.com/kayoticsully/syncthing@v0.8.9-0.20140724133906-c45a2fdc03f8/cmd/syncthing/memsize_linux.go (about) 1 package main 2 3 import ( 4 "bufio" 5 "errors" 6 "os" 7 "strconv" 8 "strings" 9 ) 10 11 func memorySize() (uint64, error) { 12 f, err := os.Open("/proc/meminfo") 13 if err != nil { 14 return 0, err 15 } 16 17 s := bufio.NewScanner(f) 18 if !s.Scan() { 19 return 0, errors.New("/proc/meminfo parse error 1") 20 } 21 22 l := s.Text() 23 fs := strings.Fields(l) 24 if len(fs) != 3 || fs[2] != "kB" { 25 return 0, errors.New("/proc/meminfo parse error 2") 26 } 27 28 kb, err := strconv.ParseUint(fs[1], 10, 64) 29 if err != nil { 30 return 0, err 31 } 32 return kb * 1024, nil 33 }