From b8c1b2e1745c7e0b6112e2b8d48639311235c70e Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Wed, 29 Jan 2020 15:53:12 +0000 Subject: [PATCH] vmm: device_manager: Make console creation a method Remove some in/out parameters and instead rely on them as members of the &mut self parameter. Signed-off-by: Rob Bradford --- vmm/src/device_manager.rs | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/vmm/src/device_manager.rs b/vmm/src/device_manager.rs index ee90772bc..1ada984b0 100644 --- a/vmm/src/device_manager.rs +++ b/vmm/src/device_manager.rs @@ -218,6 +218,7 @@ pub fn get_win_size() -> (u16, u16) { (ws.cols, ws.rows) } +#[derive(Default)] pub struct Console { // Serial port on 0x3f8 serial: Option>>, @@ -465,13 +466,6 @@ impl DeviceManager { Some(ioapic.clone()), )); - let console = DeviceManager::add_console_device( - vm_info, - &address_manager, - &interrupt_manager, - &mut virtio_devices, - )?; - DeviceManager::add_legacy_devices( vm_info, &address_manager, @@ -506,7 +500,7 @@ impl DeviceManager { let mut device_manager = DeviceManager { address_manager, - console, + console: Arc::new(Console::default()), ioapic: Some(ioapic), _mmap_regions, cmdline_additions, @@ -518,6 +512,9 @@ impl DeviceManager { _memory_manager, }; + device_manager.console = + device_manager.add_console_device(vm_info, &interrupt_manager, &mut virtio_devices)?; + #[cfg(any(feature = "pci_support", feature = "mmio_support"))] virtio_devices.append(&mut device_manager.make_virtio_devices(vm_info)?); @@ -758,8 +755,8 @@ impl DeviceManager { } fn add_console_device( + &mut self, vm_info: &VmInfo, - address_manager: &Arc, interrupt_manager: &Arc, virtio_devices: &mut Vec<(Arc>, bool)>, ) -> DeviceManagerResult> { @@ -785,14 +782,14 @@ impl DeviceManager { serial_writer, ))); - address_manager + self.address_manager .allocator .lock() .unwrap() .allocate_io_addresses(Some(GuestAddress(0x3f8)), 0x8, None) .ok_or(DeviceManagerError::AllocateIOPort)?; - address_manager + self.address_manager .io_bus .insert(serial.clone(), 0x3f8, 0x8) .map_err(DeviceManagerError::BusError)?;