From bf62472a7f8de0fa62781ad59f56e09d796be9bd Mon Sep 17 00:00:00 2001 From: mii443 Date: Thu, 17 Oct 2024 05:59:47 +0000 Subject: [PATCH] add get_controllers --- src/bin/izoli.rs | 3 ++- src/cgroup/cgroup.rs | 23 +++++++++++++---------- src/cgroup/mod.rs | 1 + 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/bin/izoli.rs b/src/bin/izoli.rs index 641e57e..9c240cf 100644 --- a/src/bin/izoli.rs +++ b/src/bin/izoli.rs @@ -5,5 +5,6 @@ fn main() { let cgroup = CGroup::new("test").unwrap(); println!("{:?}", cgroup.get_root_path()); println!("{}", cgroup.check_status()); - println!("{:?}", cgroup.read("cgroup.controllers")); + println!("{:?}", cgroup.read("cgroup.type")); + println!("{:?}", cgroup.get_controllers()); } diff --git a/src/cgroup/cgroup.rs b/src/cgroup/cgroup.rs index efb9c0d..9e75bbe 100644 --- a/src/cgroup/cgroup.rs +++ b/src/cgroup/cgroup.rs @@ -2,18 +2,10 @@ use std::{ fs::{self, File}, io::Read, path::{Path, PathBuf}, + str::FromStr, }; -pub enum Controller { - Cpu, - Cpuset, - Memory, - Io, - Hugetlb, - Misc, - Pids, - Rdma, -} +use super::controller::Controller; pub struct CGroup { pub path: PathBuf, @@ -63,4 +55,15 @@ impl CGroup { cgroup_root.join(&self.path) } + + pub fn get_controllers(&self) -> Result, std::io::Error> { + let controllers = self + .read("cgroup.controllers")? + .trim() + .split(" ") + .map(|controller| Controller::from_str(controller).unwrap_or(Controller::Unknown)) + .collect(); + + Ok(controllers) + } } diff --git a/src/cgroup/mod.rs b/src/cgroup/mod.rs index 57f2888..bcb5b67 100644 --- a/src/cgroup/mod.rs +++ b/src/cgroup/mod.rs @@ -1 +1,2 @@ pub mod cgroup; +pub mod controller;