#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)]
#[derive(Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
#[repr(u8)]
pub enum NumaZoneReclaimMode
{
Off = 0,
On = 1,
OnWriteDirtyPagesOut = 1 | 2,
OnSwapPages = 1 | 4,
OnWriteDirtyPagesOutAndSwapPages = 1 | 2 | 4,
}
impl Default for NumaZoneReclaimMode
{
#[inline(always)]
fn default() -> Self
{
NumaZoneReclaimMode::Off
}
}
impl NumaZoneReclaimMode
{
pub fn set(&self, proc_path: &ProcPath) -> io::Result<()>
{
assert_effective_user_id_is_root("write to `/proc/sys/vm/zone_reclaim_mode`");
let file_path = Self::file_path(proc_path);
if file_path.exists()
{
file_path.write_value(self.to_unpadded_decimal_integer())
}
else
{
Ok(())
}
}
#[inline(always)]
fn to_unpadded_decimal_integer(self) -> UnpaddedDecimalInteger<u8>
{
UnpaddedDecimalInteger(self as u8)
}
#[inline(always)]
fn file_path(proc_path: &ProcPath) -> PathBuf
{
proc_path.sys_vm_file_path("zone_reclaim_mode")
}
}