[][src]Module libcgroup_rs::manipulation

2.Group Manipulation API

URL: Group Manipulation API

Functions:

  • cgroup_new_cgroup
  • cgroup_add_controller
  • cgroup_get_controller
  • cgroup_free
  • cgroup_free_controllers
  • cgroup_create_cgroup
  • cgroup_create_cgroup_from_parent
  • cgroup_modify_cgroup
  • cgroup_delete_cgroup
  • cgroup_delete_cgroup_ext
  • cgroup_get_cgroup
  • cgroup_copy_cgroup
  • cgroup_compare_cgroup
  • cgroup_compare_controllers
  • cgroup_set_uid_gid
  • cgroup_get_uid_gid
  • cgroup_add_value_*
  • cgroup_get_value_*
  • cgroup_set_value_*
  • cgroup_get_value_name_count
  • cgroup_get_value_name

Usage(Create):

use libcgroup_rs::initialization::CGroupInitializer;
use libcgroup_rs::manipulation::CGroupBuilder;
use libcgroup_rs::error::{cg_get_error, C_EC_GROUP_NOT_ALLOWED};

fn main()->Result<(),Box<dyn std::error::Error>>{
    CGroupInitializer::init()?;
    let container_name = "foo";
    let cg = CGroupBuilder::new(container_name)?;
    println!("Source CG = {:?}",cg);

    // append controller
    println!("Add Controller = {:?}",cg.add_controller("cpu")?);
    println!("Get Controller = {:?}",cg.get_controller("cpu")?);

    //only root
    match cg.create(0) {
        Ok(_) => (),
        Err(e) if e.kind().eq(&cg_get_error(C_EC_GROUP_NOT_ALLOWED).kind()) =>{
            println!("Only root! = use sudo ?");
            return Ok(());
        }
        Err(e) => return Err(Box::new(e))
    }
    Ok(())
}

Usage(Create with params):

use libcgroup_rs::initialization::CGroupInitializer;
use libcgroup_rs::manipulation::CGroupBuilder;
use libcgroup_rs::error::{cg_get_error, C_EC_GROUP_NOT_ALLOWED};

fn main()->Result<(),Box<dyn std::error::Error>>{
    CGroupInitializer::init()?;

    let container_name = "foo";
    let container = CGroupBuilder::new(container_name)?;
    println!("Container = {:?}",container);

    let ctrl = container.add_controller("cpu")?;
    println!("Controller = {:?}",ctrl);

    // cfg = /cgroups/foo/cpu/cfs_quota_us
    ctrl.add_u64("cpu.cfs_quota_us",50000)?;

    // cfg = /cgroups/foo/cpu/cfs_period_us
    ctrl.add_u64("cpu.cfs_period_us",100000)?;

    // create
    container.create(0)?;

    Ok(())
}

Structs

CGroupBuilder
CGroupControllerBuilder