30 lines
650 B
Go
30 lines
650 B
Go
package contrack
|
|
|
|
import (
|
|
"bufio"
|
|
"errors"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
// detectCgroupPath returns the first-found mount point of type cgroup2
|
|
// and stores it in the cgroupPath global variable.
|
|
func detectCgroupPath() (string, error) {
|
|
f, err := os.Open("/proc/mounts")
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
defer f.Close()
|
|
|
|
scanner := bufio.NewScanner(f)
|
|
for scanner.Scan() {
|
|
// example fields: cgroup2 /sys/fs/cgroup/unified cgroup2 rw,nosuid,nodev,noexec,relatime 0 0
|
|
fields := strings.Split(scanner.Text(), " ")
|
|
if len(fields) >= 3 && fields[2] == "cgroup2" {
|
|
return fields[1], nil
|
|
}
|
|
}
|
|
|
|
return "", errors.New("cgroup2 not mounted")
|
|
}
|