diff --git a/src/main.rs b/src/main.rs index 576ac2313..c114ba9dc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -31,6 +31,12 @@ fn main() { .help("Number of virtual CPUs") .takes_value(true), ) + .arg( + Arg::with_name("memory") + .long("memory") + .help("Amount of RAM (in MB)") + .takes_value(true), + ) .get_matches(); let kernel_arg = cmd_arguments @@ -45,10 +51,15 @@ fn main() { vcpus = cpus.parse::().unwrap(); } - println!("VM [{} vCPUS]", vcpus); + let mut memory = DEFAULT_MEMORY; + if let Some(mem) = cmd_arguments.value_of("memory") { + memory = mem.parse::().unwrap(); + } + + println!("VM [{} vCPUS {} MB of memory]", vcpus, memory); println!("Booting {:?}...", kernel_path); - let vm_config = VmConfig::new(kernel_path, vcpus).unwrap(); + let vm_config = VmConfig::new(kernel_path, vcpus, memory).unwrap(); vmm::boot_kernel(vm_config).unwrap(); } diff --git a/vmm/src/vm.rs b/vmm/src/vm.rs index 34142da53..72522b3ff 100644 --- a/vmm/src/vm.rs +++ b/vmm/src/vm.rs @@ -31,6 +31,7 @@ use vmm_sys_util::EventFd; const VCPU_RTSIG_OFFSET: i32 = 0; pub const DEFAULT_VCPUS: u8 = 1; +pub const DEFAULT_MEMORY: GuestUsize = 512; const DEFAULT_CMDLINE: &str = "console=ttyS0 reboot=k panic=1 pci=off nomodules \ i8042.noaux i8042.nomux i8042.nopnp i8042.dumbkbd"; const CMDLINE_OFFSET: GuestAddress = GuestAddress(0x20000); @@ -168,9 +169,10 @@ pub struct VmConfig<'a> { } impl<'a> VmConfig<'a> { - pub fn new(kernel_path: &'a Path, vcpus: u8) -> Result { + pub fn new(kernel_path: &'a Path, vcpus: u8, memory_size: GuestUsize) -> Result { Ok(VmConfig { kernel_path, + memory_size, vcpu_count: vcpus, ..Default::default() }) @@ -187,8 +189,8 @@ impl<'a> Default for VmConfig<'a> { kernel_path: Path::new(""), cmdline: Some(cmdline), cmdline_addr: CMDLINE_OFFSET, - memory_size: 512, - vcpu_count: 1, + memory_size: DEFAULT_MEMORY, + vcpu_count: DEFAULT_VCPUS, } } }