Files
podman/vendor/github.com/containers/common/pkg/cgroups/cpuset_linux.go
Black-Hole1 ae6e390760 vendor in latests containers/common
To include export HostContainersInternal

Signed-off-by: Black-Hole1 <bh@bugs.cc>
2023-06-21 15:10:25 +08:00

58 lines
1.5 KiB
Go

//go:build linux
// +build linux
package cgroups
import (
"path/filepath"
"github.com/opencontainers/runc/libcontainer/cgroups"
"github.com/opencontainers/runc/libcontainer/cgroups/fs"
"github.com/opencontainers/runc/libcontainer/cgroups/fs2"
"github.com/opencontainers/runc/libcontainer/configs"
)
type linuxCpusetHandler struct {
CPUSet fs.CpusetGroup
}
func getCpusetHandler() *linuxCpusetHandler {
return &linuxCpusetHandler{}
}
// Apply set the specified constraints
func (c *linuxCpusetHandler) Apply(ctr *CgroupControl, res *configs.Resources) error {
if ctr.cgroup2 {
man, err := fs2.NewManager(ctr.config, filepath.Join(cgroupRoot, ctr.config.Path))
if err != nil {
return err
}
return man.Set(res)
}
path := filepath.Join(cgroupRoot, CPUset, ctr.config.Path)
return c.CPUSet.Set(path, res)
}
// Create the cgroup
func (c *linuxCpusetHandler) Create(ctr *CgroupControl) (bool, error) {
if ctr.cgroup2 {
path := filepath.Join(cgroupRoot, ctr.config.Path)
return true, cpusetCopyFromParent(path, true)
}
created, err := ctr.createCgroupDirectory(CPUset)
if !created || err != nil {
return created, err
}
return true, cpusetCopyFromParent(ctr.getCgroupv1Path(CPUset), false)
}
// Destroy the cgroup
func (c *linuxCpusetHandler) Destroy(ctr *CgroupControl) error {
return rmDirRecursively(ctr.getCgroupv1Path(CPUset))
}
// Stat fills a metrics structure with usage stats for the controller
func (c *linuxCpusetHandler) Stat(_ *CgroupControl, _ *cgroups.Stats) error {
return nil
}