mod.rs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #![allow(dead_code, unused_variables, unused_imports)]
  2. pub mod mem_cgroup;
  3. use alloc::{collections::LinkedList, rc::Weak, sync::Arc, vec::Vec};
  4. use alloc::boxed::Box;
  5. use crate::filesystem::vfs::IndexNode;
  6. pub struct Cgroup {
  7. css: Weak<CgroupSubsysState>,
  8. /// 当前所在的深度
  9. level: u32,
  10. /// 支持的最大深度
  11. max_depth: u32,
  12. /// 可见后代数量
  13. nr_descendants: u32,
  14. /// 正在死亡后代数量
  15. nr_dying_descendants: u32,
  16. /// 允许的最大后代数量
  17. max_descendants: u32,
  18. /// css_set的数量
  19. nr_populated_csets: u32,
  20. /// 子group中有任务的记数
  21. nr_populated_domain_children: u32,
  22. /// 线程子group中有任务的记数
  23. nr_populated_threaded_children: u32,
  24. /// 活跃线程子cgroup数量
  25. nr_threaded_children: u32,
  26. /// 关联cgroup的inode
  27. kernfs_node: Box<dyn IndexNode>,
  28. }
  29. /// 控制资源的统计信息
  30. pub struct CgroupSubsysState {
  31. cgroup: Arc<Cgroup>,
  32. /// 兄弟节点
  33. sibling: LinkedList<Arc<Cgroup>>,
  34. /// 孩子节点
  35. children: LinkedList<Arc<Cgroup>>,
  36. }
  37. pub struct CgroupSubsys {}
  38. /// cgroup_sub_state 的集合
  39. pub struct CssSet {
  40. subsys: Vec<Arc<CgroupSubsysState>>,
  41. }