[−][src]Struct cgroups_fs::Cgroup
A controller of a specific cgroups namespace.
This type supports a number of operations for manipulating with a cgroups namespace.
Methods
impl Cgroup
[src]
pub fn new(cgroup_name: &CgroupName, subsystem: &str) -> Self
[src]
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.
pub fn create(&self) -> Result<()>
[src]
Creates a cgroups namespace.
Notes:
- Keep in mind the usual filesystem permissions (owner, group, and mode bits).
pub fn remove(&self) -> Result<()>
[src]
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).
pub fn set_raw_value<V>(&self, key: &str, value: V) -> Result<()> where
V: AsRef<[u8]>,
[src]
V: AsRef<[u8]>,
Sets a binary or string value to the cgroup control file.
pub fn set_value<V>(&self, key: &str, value: V) -> Result<()> where
V: Copy + ToString,
[src]
V: Copy + ToString,
Sets a value to the cgroup control file.
pub fn get_raw_value(&self, key: &str) -> Result<String>
[src]
Gets a string value from cgroup control file.
pub fn get_value<T>(&self, key: &str) -> Result<T> where
T: FromStr,
[src]
T: FromStr,
Gets a value from cgroup control file.
pub fn add_task(&self, pid: Pid) -> Result<()>
[src]
Attaches a task (thread) to the cgroup.
pub fn get_tasks(&self) -> Result<Vec<Pid>>
[src]
Lists tasks (threads) attached to the cgroup.
pub fn send_signal_to_all_tasks(&self, signal: Signal) -> Result<usize>
[src]
Sends a specified Unix Signal to all the tasks in the Cgroup.
pub fn kill_all_tasks(&self) -> Result<()>
[src]
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)
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).
Trait Implementations
Auto Trait Implementations
Blanket Implementations
impl<T, U> Into for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From for T
[src]
impl<T, U> TryFrom for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Borrow for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
T: ?Sized,