...
1
2
3
4
5
6
7
8
9
10
11
12
13
14 package procfs
15
16 import (
17 "fmt"
18 "strings"
19
20 "github.com/prometheus/procfs/internal/util"
21 )
22
23 func sysctlToPath(sysctl string) string {
24 return strings.Replace(sysctl, ".", "/", -1)
25 }
26
27 func (fs FS) SysctlStrings(sysctl string) ([]string, error) {
28 value, err := util.SysReadFile(fs.proc.Path("sys", sysctlToPath(sysctl)))
29 if err != nil {
30 return nil, err
31 }
32 return strings.Fields(value), nil
33
34 }
35
36 func (fs FS) SysctlInts(sysctl string) ([]int, error) {
37 fields, err := fs.SysctlStrings(sysctl)
38 if err != nil {
39 return nil, err
40 }
41
42 values := make([]int, len(fields))
43 for i, f := range fields {
44 vp := util.NewValueParser(f)
45 values[i] = vp.Int()
46 if err := vp.Err(); err != nil {
47 return nil, fmt.Errorf("%s: field %d in sysctl %s is not a valid int: %w", ErrFileParse, i, sysctl, err)
48 }
49 }
50 return values, nil
51 }
52
View as plain text