mirror of
https://github.com/kata-containers/cgroups-rs.git
synced 2026-08-05 02:13:23 +00:00
manager: Introduce FsManager
`Manager` is a trait to unify the interface of cgroups. It is designed for OCI containers. Its `set()` takes Linux resources of the OCI spec to set cgroups. The `FsManager`, the concrete implementation of `Manager`, manipulates cgroups through cgroupfs, and supports both cgroups v1 and v2. Signed-off-by: Xuewei Niu <niuxuewei.nxw@antgroup.com>
This commit is contained in:
42
src/lib.rs
42
src/lib.rs
@@ -5,3 +5,45 @@
|
||||
//
|
||||
|
||||
pub mod fs;
|
||||
#[cfg(feature = "oci")]
|
||||
pub mod manager;
|
||||
#[cfg(feature = "oci")]
|
||||
pub use manager::{FsManager, Manager};
|
||||
pub mod stats;
|
||||
pub use stats::CgroupStats;
|
||||
|
||||
/// The maximum value for CPU shares in cgroups v1
|
||||
pub const CPU_SHARES_V1_MAX: u64 = 262144;
|
||||
/// The maximum value for CPU weight in cgroups v2
|
||||
pub const CPU_WEIGHT_V2_MAX: u64 = 10000;
|
||||
|
||||
/// The current state of the control group
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||
pub enum FreezerState {
|
||||
/// The processes in the control group are _not_ frozen.
|
||||
Thawed,
|
||||
/// The processes in the control group are in the processes of being frozen.
|
||||
Freezing,
|
||||
/// The processes in the control group are frozen.
|
||||
Frozen,
|
||||
}
|
||||
|
||||
/// A structure representing a `pid`. Currently implementations exist for `u64` and
|
||||
/// `std::process::Child`.
|
||||
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)]
|
||||
pub struct CgroupPid {
|
||||
/// The process identifier
|
||||
pub pid: u64,
|
||||
}
|
||||
|
||||
impl From<u64> for CgroupPid {
|
||||
fn from(u: u64) -> CgroupPid {
|
||||
CgroupPid { pid: u }
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&std::process::Child> for CgroupPid {
|
||||
fn from(u: &std::process::Child) -> CgroupPid {
|
||||
CgroupPid { pid: u.id() as u64 }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user