28 lines
		
	
	
		
			526 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			526 B
		
	
	
	
		
			Go
		
	
	
	
package cgroupv2
 | 
						|
 | 
						|
import (
 | 
						|
	"sync"
 | 
						|
	"syscall"
 | 
						|
 | 
						|
	"golang.org/x/sys/unix"
 | 
						|
)
 | 
						|
 | 
						|
var (
 | 
						|
	isCgroupV2Once sync.Once
 | 
						|
	isCgroupV2     bool
 | 
						|
	isCgroupV2Err  error
 | 
						|
)
 | 
						|
 | 
						|
// Enabled returns whether we are running on cgroup v2
 | 
						|
func Enabled() (bool, error) {
 | 
						|
	isCgroupV2Once.Do(func() {
 | 
						|
		var st syscall.Statfs_t
 | 
						|
		if err := syscall.Statfs("/sys/fs/cgroup", &st); err != nil {
 | 
						|
			isCgroupV2, isCgroupV2Err = false, err
 | 
						|
		} else {
 | 
						|
			isCgroupV2, isCgroupV2Err = st.Type == unix.CGROUP2_SUPER_MAGIC, nil
 | 
						|
		}
 | 
						|
	})
 | 
						|
	return isCgroupV2, isCgroupV2Err
 | 
						|
}
 |