pub struct Cgroup { /* private fields */ }
Expand description
A controller of a specific cgroups namespace.
This type supports a number of operations for manipulating with a cgroups namespace.
Implementations§
Source§impl Cgroup
impl Cgroup
Sourcepub fn new(cgroup_name: &CgroupName, subsystem: &str) -> Self
pub fn new(cgroup_name: &CgroupName, subsystem: &str) -> Self
Defines a cgroup relation.
Notes:
- It does not create any cgroups. It is just an API abstraction layer. Learn more about
Cgroup::create
,Cgroup::remove
, andAutomanagedCgroup::init
methods.
Sourcepub fn create(&self) -> Result<()>
pub fn create(&self) -> Result<()>
Creates a cgroups namespace.
Notes:
- Keep in mind the usual filesystem permissions (owner, group, and mode bits).
Sourcepub fn remove(&self) -> Result<()>
pub fn remove(&self) -> Result<()>
Removes a cgroups namespace.
Notes:
- This method will fail if there are nested cgroups.
- Keep in mind the usual filesystem permissions (owner, group, and mode bits).
Sourcepub fn set_raw_value<V>(&self, key: &str, value: V) -> Result<()>
pub fn set_raw_value<V>(&self, key: &str, value: V) -> Result<()>
Sets a binary or string value to the cgroup control file.
Sourcepub fn set_value<V>(&self, key: &str, value: V) -> Result<()>
pub fn set_value<V>(&self, key: &str, value: V) -> Result<()>
Sets a value to the cgroup control file.
Sourcepub fn get_raw_value(&self, key: &str) -> Result<String>
pub fn get_raw_value(&self, key: &str) -> Result<String>
Gets a string value from cgroup control file.
Sourcepub fn get_value<T>(&self, key: &str) -> Result<T>where
T: FromStr,
pub fn get_value<T>(&self, key: &str) -> Result<T>where
T: FromStr,
Gets a value from cgroup control file.
Sourcepub fn send_signal_to_all_tasks(&self, signal: Signal) -> Result<usize>
pub fn send_signal_to_all_tasks(&self, signal: Signal) -> Result<usize>
Sends a specified Unix Signal to all the tasks in the Cgroup.
Sourcepub fn kill_all_tasks(&self) -> Result<()>
👎Deprecated since 1.0.1: please, use freezer
cgroup to implement kill_all_tasks
reliably (https://gitlab.com/dots.org.ua/ddots-runner/blob/d967ee3ba9de364dfb5a2e1a4f468586efb504f8/src/extensions/process.rs#L132-166)
pub fn kill_all_tasks(&self) -> Result<()>
freezer
cgroup to implement kill_all_tasks
reliably (https://gitlab.com/dots.org.ua/ddots-runner/blob/d967ee3ba9de364dfb5a2e1a4f468586efb504f8/src/extensions/process.rs#L132-166)Kills (SIGKILL) all the attached to the cgroup tasks.
WARNING: The naive implementation turned out to be not reliable enough for the fork-bomb
use-case. To implement a reliable kill_all
method, use freezer
Cgroup. It is decided to
move such extensions into a separate crate (to be announced).