MCPcopy Index your code
hub / github.com/cloud-hypervisor/cloud-hypervisor / create_devices

Method create_devices

vmm/src/device_manager.rs:1471–1568  ·  view source on GitHub ↗
(
        &mut self,
        console_info: Option<ConsoleInfo>,
        console_resize_pipe: Option<Arc<File>>,
        original_termios_opt: Arc<Mutex<Option<termios>>>,
        interrupt_controller:

Source from the content-addressed store, hash-verified

1469
1470 #[allow(clippy::needless_pass_by_value)]
1471 pub fn create_devices(
1472 &mut self,
1473 console_info: Option<ConsoleInfo>,
1474 console_resize_pipe: Option<Arc<File>>,
1475 original_termios_opt: Arc<Mutex<Option<termios>>>,
1476 interrupt_controller: Arc<Mutex<dyn InterruptController>>,
1477 ) -> DeviceManagerResult<()> {
1478 trace_scoped!("create_devices");
1479
1480 self.cpu_manager
1481 .lock()
1482 .unwrap()
1483 .set_interrupt_controller(interrupt_controller.clone());
1484
1485 // Now we can create the legacy interrupt manager, which needs the freshly
1486 // formed IOAPIC device.
1487 let legacy_interrupt_manager: Arc<
1488 dyn InterruptManager<GroupConfig = LegacyIrqGroupConfig>,
1489 > = Arc::new(LegacyUserspaceInterruptManager::new(Arc::clone(
1490 &interrupt_controller,
1491 )));
1492
1493 {
1494 if let Some(acpi_address) = self.memory_manager.lock().unwrap().acpi_address() {
1495 self.address_manager
1496 .mmio_bus
1497 .insert(
1498 Arc::clone(&self.memory_manager) as Arc<dyn BusDeviceSync>,
1499 acpi_address.0,
1500 MEMORY_MANAGER_ACPI_SIZE as u64,
1501 )
1502 .map_err(DeviceManagerError::BusError)?;
1503 }
1504 }
1505
1506 #[cfg(target_arch = "x86_64")]
1507 self.add_legacy_devices(
1508 self.reset_evt
1509 .try_clone()
1510 .map_err(DeviceManagerError::EventFd)?,
1511 )?;
1512
1513 #[cfg(target_arch = "aarch64")]
1514 self.add_legacy_devices(legacy_interrupt_manager.as_ref())?;
1515
1516 {
1517 self.ged_notification_device = self.add_acpi_devices(
1518 legacy_interrupt_manager.as_ref(),
1519 self.reset_evt
1520 .try_clone()
1521 .map_err(DeviceManagerError::EventFd)?,
1522 self.guest_exit_evt
1523 .try_clone()
1524 .map_err(DeviceManagerError::EventFd)?,
1525 )?;
1526 }
1527
1528 self.original_termios_opt = original_termios_opt;

Callers 3

init_sev_snpMethod · 0.80
init_mshvMethod · 0.80
init_kvmMethod · 0.80

Calls 15

newFunction · 0.85
acpi_addressMethod · 0.80
add_legacy_devicesMethod · 0.80
add_acpi_devicesMethod · 0.80
add_console_devicesMethod · 0.80
add_tpm_deviceMethod · 0.80
make_virtio_devicesMethod · 0.80
add_pci_devicesMethod · 0.80
add_pvpanic_deviceMethod · 0.80
add_ivshmem_deviceMethod · 0.80

Tested by

no test coverage detected