package util import ( "os" "syscall" "golang.org/x/sys/unix" ) // IsCgroup2UnifiedMode returns whether we are running in cgroup 2 cgroup2 mode. func IsCgroup2UnifiedMode() (bool, error) { isUnifiedOnce.Do(func() { var st syscall.Statfs_t if err := syscall.Statfs("/sys/fs/cgroup", &st); err != nil { isUnified, isUnifiedErr = false, err } else { isUnified, isUnifiedErr = st.Type == unix.CGROUP2_SUPER_MAGIC, nil } }) return isUnified, isUnifiedErr } func UID(st os.FileInfo) int { return int(st.Sys().(*syscall.Stat_t).Uid) } func GID(st os.FileInfo) int { return int(st.Sys().(*syscall.Stat_t).Gid) }