use std::{fmt, path::Path};
#[macro_use]
mod macros;
#[macro_use]
mod cgroup;
pub mod blkio;
pub mod builder;
mod command_ext;
pub mod cpu;
pub mod cpuacct;
pub mod cpuset;
pub mod devices;
pub mod freezer;
pub mod hugetlb;
pub mod memory;
pub mod net_cls;
pub mod net_prio;
pub mod perf_event;
pub mod pids;
pub mod rdma;
mod unified_repr;
pub use builder::Builder;
pub use cgroup::{Cgroup, CgroupPath};
pub use command_ext::CommandExt;
pub use unified_repr::UnifiedRepr;
const CGROUPFS_MOUNT_POINT: &str = "/sys/fs/cgroup";
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum SubsystemKind {
Cpu,
Cpuset,
Cpuacct,
Memory,
HugeTlb,
Devices,
BlkIo,
Rdma,
NetPrio,
NetCls,
Pids,
Freezer,
PerfEvent,
}
#[derive(Debug, Default, Clone, PartialEq, Eq)]
pub struct Resources {
pub cpu: cpu::Resources,
pub cpuset: cpuset::Resources,
pub memory: memory::Resources,
pub hugetlb: hugetlb::Resources,
pub devices: devices::Resources,
pub blkio: blkio::Resources,
pub rdma: rdma::Resources,
pub net_prio: net_prio::Resources,
pub net_cls: net_cls::Resources,
pub pids: pids::Resources,
pub freezer: freezer::Resources,
}
impl AsRef<Path> for SubsystemKind {
fn as_ref(&self) -> &Path {
Path::new(self.as_str())
}
}
impl fmt::Display for SubsystemKind {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.as_str())
}
}
impl SubsystemKind {
fn as_str(self) -> &'static str {
match self {
Self::Cpu => "cpu",
Self::Cpuset => "cpuset",
Self::Cpuacct => "cpuacct",
Self::Memory => "memory",
Self::HugeTlb => "hugetlb",
Self::Devices => "devices",
Self::BlkIo => "blkio",
Self::Rdma => "rdma",
Self::NetPrio => "net_prio",
Self::NetCls => "net_cls",
Self::Pids => "pids",
Self::Freezer => "freezer",
Self::PerfEvent => "perf_event",
}
}
}