...
1package main
2
3import (
4 "strconv"
5 "strings"
6
7 "golang.conradwood.net/go-easyops/errors"
8 "golang.conradwood.net/go-easyops/utils"
9)
10
11func CreateStandardCgroup(dir string) error {
12 err := mkdir(dir)
13 if err != nil {
14 return errors.Errorf("failed to create parent cgroup (%s): %s", dir, err)
15 }
16 taskdir := dir + "/tasks"
17 err = mkdir(taskdir)
18 if err != nil {
19 return errors.Errorf("failed to create cgroup tasks (%s): %s", taskdir, err)
20 }
21 return nil
22}
23
24func get_pids_for_cgroup(cgroupdir string) ([]uint64, error) {
25 fname := cgroupdir + "/cgroup.procs"
26 if !utils.FileExists(fname) {
27 return nil, nil
28 }
29 b, err := utils.ReadFile(fname)
30 if err != nil {
31 return nil, errors.Wrap(err)
32 }
33 var res []uint64
34 for _, line := range strings.Split(string(b), "\n") {
35 if line == "" {
36 continue
37 }
38 pid, err := strconv.ParseUint(line, 10, 64)
39 if err != nil {
40 return nil, errors.Wrap(err)
41 }
42 res = append(res, pid)
43 }
44 return res, nil
45}
View as plain text