use clap::{App, Arg, ArgMatches}; use microvmi::api::params::DriverInitParams; use microvmi::api::Introspectable; use utilities::Clappable; fn parse_args() -> ArgMatches<'static> { App::new(file!()) .version("0.1") .author("Mathieu Tarral") .about("Dumps the state of registers on VCPU 0") .arg(Arg::with_name("vm_name").index(1).required(true)) .args(DriverInitParams::to_clap_args().as_ref()) .get_matches() } fn main() { env_logger::init(); let matches = parse_args(); let init_params = DriverInitParams::from_matches(&matches); let mut drv: Box = microvmi::init(None, Some(init_params)).expect("Failed to init libmicrovmi"); println!("pausing the VM"); drv.pause().expect("Failed to pause VM"); let total_vcpu_count: u16 = drv.get_vcpu_count().expect("Failed to get vcpu count"); for vcpu in 0..total_vcpu_count { println!("dumping registers on VCPU {}", vcpu); let regs = drv.read_registers(vcpu).expect("Failed to read registers"); println!("{:#x?}", regs); } println!("resuming the VM"); drv.resume().expect("Failed to resume VM"); }