13
"github.com/sirupsen/logrus"
16
func GetRacct(filter string) (map[string]uint64, error) {
17
bp, err := syscall.ByteSliceFromString(filter)
22
_, _, errno := syscall.Syscall6(syscall.SYS_RCTL_GET_RACCT,
23
uintptr(unsafe.Pointer(&bp[0])),
25
uintptr(unsafe.Pointer(&buf[0])),
26
uintptr(len(buf)), 0, 0)
28
return nil, fmt.Errorf("error calling rctl_get_racct with filter %s: %v", errno)
30
len := bytes.IndexByte(buf[:], byte(0))
31
entries := strings.Split(string(buf[:len]), ",")
32
res := make(map[string]uint64)
33
for _, entry := range entries {
34
key, valstr, _ := strings.Cut(entry, "=")
35
val, err := strconv.ParseUint(valstr, 10, 0)
37
logrus.Warnf("unexpected rctl entry, ignoring: %s", entry)