#[derive(Default, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[derive(Deserialize, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct ThreadedControllersConfiguration
{
pub cpu: Option<CpuControllerConfiguration>,
pub cpuset: Option<CpusetControllerConfiguration>,
pub pids: Option<PidsControllerConfiguration>,
pub perf_event: Option<PerfEventControllerConfiguration>,
pub debug: Option<DebugControllerConfiguration>,
}
impl ControllersConfiguration for ThreadedControllersConfiguration
{
fn configure(&self, mount_point: &CgroupMountPoint, cgroup: &Rc<NonRootCgroup>, available_controllers: &Controllers, defaults: &DefaultHugePageSizes) -> io::Result<()>
{
configure_controller(&self.cpu, mount_point, cgroup, available_controllers, defaults)?;
configure_controller(&self.cpuset, mount_point, cgroup, available_controllers, defaults)?;
configure_controller(&self.pids, mount_point, cgroup, available_controllers, defaults)?;
configure_controller(&self.perf_event, mount_point, cgroup, available_controllers, defaults)?;
configure_controller(&self.debug, mount_point, cgroup, available_controllers, defaults)?;
Ok(())
}
fn to_desired_controllers(&self) -> Controllers
{
let mut controllers = Controllers::new_if_going_to_be_full();
self.add_to_desired_controllers(&mut controllers);
controllers
}
}
impl ThreadedControllersConfiguration
{
fn add_to_desired_controllers(&self, controllers: &mut Controllers)
{
controllers.add_if_some(&self.cpu);
controllers.add_if_some(&self.cpuset);
controllers.add_if_some(&self.pids);
controllers.add_if_some(&self.perf_event);
controllers.add_if_some(&self.debug);
}
}