1#![forbid(unsafe_code)]
7
8use guid::Guid;
9use mesh::MeshPayload;
10use vm_resource::Resource;
11use vm_resource::ResourceId;
12use vm_resource::kind::DiskHandleKind;
13use vm_resource::kind::PciDeviceHandleKind;
14
15#[derive(MeshPayload)]
17pub struct NvmeControllerHandle {
18 pub subsystem_id: Guid,
20 pub msix_count: u16,
22 pub max_io_queues: u16,
24 pub namespaces: Vec<NamespaceDefinition>,
26}
27
28impl ResourceId<PciDeviceHandleKind> for NvmeControllerHandle {
29 const ID: &'static str = "nvme";
30}
31
32#[derive(MeshPayload)]
34pub struct NamespaceDefinition {
35 pub nsid: u32,
37 pub read_only: bool,
39 pub disk: Resource<DiskHandleKind>,
41}