qemu_command_builder/
overcommit.rs

1use crate::common::OnOff;
2use crate::to_command::{ToArg, ToCommand};
3
4#[derive(Debug, Clone, Hash, Ord, PartialOrd, Eq, PartialEq)]
5pub enum OnOffOnfault {
6    On,
7    Off,
8    Onfault,
9}
10
11impl ToArg for OnOffOnfault {
12    fn to_arg(&self) -> &str {
13        match self {
14            OnOffOnfault::On => "on",
15            OnOffOnfault::Off => "off",
16            OnOffOnfault::Onfault => "on-fault",
17        }
18    }
19}
20
21#[derive(Debug, Clone, Hash, Ord, PartialOrd, Eq, PartialEq)]
22pub enum Overcommit {
23    MemLock(OnOffOnfault),
24    CpuPm(OnOff),
25}
26
27impl ToCommand for Overcommit {
28    fn to_command(&self) -> Vec<String> {
29        let mut cmd = vec![];
30
31        cmd.push("-overcommit".to_string());
32        match self {
33            Overcommit::MemLock(memlock) => {
34                cmd.push(memlock.to_arg().to_string());
35            }
36            Overcommit::CpuPm(cpupm) => {
37                cmd.push(cpupm.to_arg().to_string());
38            }
39        }
40
41        cmd
42    }
43}