virtio/
resolve.rs

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4//! Resource resolver definitions for virtio devices.
5
6use crate::VirtioDevice;
7use guestmem::GuestMemory;
8use vm_resource::CanResolveTo;
9use vm_resource::kind::VirtioDeviceHandle;
10use vmcore::vm_task::VmTaskDriverSource;
11
12impl CanResolveTo<ResolvedVirtioDevice> for VirtioDeviceHandle {
13    type Input<'a> = VirtioResolveInput<'a>;
14}
15
16/// A resolved virtio device.
17pub struct ResolvedVirtioDevice(pub Box<dyn VirtioDevice>);
18
19impl<T: 'static + VirtioDevice> From<T> for ResolvedVirtioDevice {
20    fn from(value: T) -> Self {
21        Self(Box::new(value))
22    }
23}
24
25/// Resolver input for [`VirtioDeviceHandle`].
26pub struct VirtioResolveInput<'a> {
27    /// The VM driver source.
28    pub driver_source: &'a VmTaskDriverSource,
29    /// The guest memory for virtio device DMA.
30    pub guest_memory: &'a GuestMemory,
31}