
runc rc95 contains a fix for CVE-2021-30465. runc rc94 provides fixes and improvements. One notable change is cgroup manager's Set now accept Resources rather than Cgroup (see https://github.com/opencontainers/runc/pull/2906). Modify the code accordingly. Also update runc dependencies (as hinted by hack/lint-depdendencies.sh): github.com/cilium/ebpf v0.5.0 github.com/containerd/console v1.0.2 github.com/coreos/go-systemd/v22 v22.3.1 github.com/godbus/dbus/v5 v5.0.4 github.com/moby/sys/mountinfo v0.4.1 golang.org/x/sys v0.0.0-20210426230700-d19ff857e887 github.com/google/go-cmp v0.5.4 github.com/kr/pretty v0.2.1 github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
62 lines
1.8 KiB
Go
62 lines
1.8 KiB
Go
// +build linux
|
|
|
|
package cgroups
|
|
|
|
import (
|
|
"github.com/opencontainers/runc/libcontainer/configs"
|
|
)
|
|
|
|
type Manager interface {
|
|
// Apply creates a cgroup, if not yet created, and adds a process
|
|
// with the specified pid into that cgroup. A special value of -1
|
|
// can be used to merely create a cgroup.
|
|
Apply(pid int) error
|
|
|
|
// GetPids returns the PIDs of all processes inside the cgroup.
|
|
GetPids() ([]int, error)
|
|
|
|
// GetAllPids returns the PIDs of all processes inside the cgroup
|
|
// any all its sub-cgroups.
|
|
GetAllPids() ([]int, error)
|
|
|
|
// GetStats returns cgroups statistics.
|
|
GetStats() (*Stats, error)
|
|
|
|
// Freeze sets the freezer cgroup to the specified state.
|
|
Freeze(state configs.FreezerState) error
|
|
|
|
// Destroy removes cgroup.
|
|
Destroy() error
|
|
|
|
// Path returns a cgroup path to the specified controller/subsystem.
|
|
// For cgroupv2, the argument is unused and can be empty.
|
|
Path(string) string
|
|
|
|
// Set sets cgroup resources parameters/limits. If the argument is nil,
|
|
// the resources specified during Manager creation (or the previous call
|
|
// to Set) are used.
|
|
Set(r *configs.Resources) error
|
|
|
|
// GetPaths returns cgroup path(s) to save in a state file in order to
|
|
// restore later.
|
|
//
|
|
// For cgroup v1, a key is cgroup subsystem name, and the value is the
|
|
// path to the cgroup for this subsystem.
|
|
//
|
|
// For cgroup v2 unified hierarchy, a key is "", and the value is the
|
|
// unified path.
|
|
GetPaths() map[string]string
|
|
|
|
// GetCgroups returns the cgroup data as configured.
|
|
GetCgroups() (*configs.Cgroup, error)
|
|
|
|
// GetFreezerState retrieves the current FreezerState of the cgroup.
|
|
GetFreezerState() (configs.FreezerState, error)
|
|
|
|
// Exists returns whether the cgroup path exists or not.
|
|
Exists() bool
|
|
|
|
// OOMKillCount reports OOM kill count for the cgroup.
|
|
OOMKillCount() (uint64, error)
|
|
}
|