1use std::path::PathBuf;
3
4pub struct MachineOpts {
8 pub ram_size: u64,
9 pub cpu_count: u32,
10 pub kernel: Option<PathBuf>,
11 pub bios: Option<PathBuf>,
12 pub append: Option<String>,
13 pub nographic: bool,
14 pub drive: Option<PathBuf>,
15}
16
17pub trait Machine: Send + Sync {
18 fn name(&self) -> &str;
19 fn init(
20 &mut self,
21 opts: &MachineOpts,
22 ) -> Result<(), Box<dyn std::error::Error>>;
23 fn reset(&mut self);
24 fn pause(&mut self);
25 fn resume(&mut self);
26 fn shutdown(&mut self);
27 fn boot(&mut self) -> Result<(), Box<dyn std::error::Error>>;
28 fn cpu_count(&self) -> usize;
29 fn ram_size(&self) -> u64;
30}