[−][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.
Implementations
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
impl RefUnwindSafe for Cgroup
impl Send for Cgroup
impl Sync for Cgroup
impl Unpin for Cgroup
impl UnwindSafe for Cgroup
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> 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<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,