vmbus_channel/
resources.rs

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4//! Resource definitions related to vmbus.
5
6use crate::channel::VmbusDevice;
7use vm_resource::CanResolveTo;
8use vm_resource::kind::VmbusDeviceHandleKind;
9use vmcore::vm_task::VmTaskDriverSource;
10
11impl CanResolveTo<ResolvedVmbusDevice> for VmbusDeviceHandleKind {
12    type Input<'a> = ResolveVmbusDeviceHandleParams<'a>;
13}
14
15/// Resolve resource input parameters for vmbus device handles.
16pub struct ResolveVmbusDeviceHandleParams<'a> {
17    /// The driver source to use for spawning tasks and IO.
18    pub driver_source: &'a VmTaskDriverSource,
19}
20
21/// A resolved vmbus device.
22pub struct ResolvedVmbusDevice(pub Box<dyn VmbusDevice>);
23
24impl<T: 'static + VmbusDevice> From<T> for ResolvedVmbusDevice {
25    fn from(value: T) -> Self {
26        Self(Box::new(value))
27    }
28}