pub struct AutomanagedCgroup { /* private fields */ }
Expand description
An automatically managed controller of a specific cgroups subsystem.
It is a wrapper around Cgroup
type which automatically creates (on init
) and removes
(on drop
) a cgroup in a given subsystem.
Since it is a wrapper, all the methods from Cgroup
type are directly available for
AutomanagedCgroup
instances.
Implementations§
Source§impl AutomanagedCgroup
impl AutomanagedCgroup
Sourcepub fn init(cgroup_name: &CgroupName, subsystem: &str) -> Result<Self>
pub fn init(cgroup_name: &CgroupName, subsystem: &str) -> Result<Self>
Inits a cgroup, which means that it creates a cgroup in a given subsystem.
Notes:
- If there is an existing cgroup, it will be recreated from scratch. If that is not what
you what, consider using
Cgroup
type instead. - The cgroup will be automatically removed once the
AutomanagedCgroup
instance is dropped.
Methods from Deref<Target = Cgroup>§
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).