1use crate::config::Config;
7use crate::rpc::VmRpc;
8use hypervisor_resources::HypervisorKind;
9use mesh::MeshPayload;
10use mesh::payload::message::ProtobufMessage;
11use mesh_worker::WorkerId;
12use vm_resource::Resource;
13use vmm_core_defs::HaltReason;
14
15#[cfg(unix)]
17pub type SharedMemoryFd = std::os::fd::OwnedFd;
18#[cfg(windows)]
20pub type SharedMemoryFd = std::os::windows::io::OwnedHandle;
21
22pub const VM_WORKER: WorkerId<VmWorkerParameters> = WorkerId::new("VmWorker");
23
24#[derive(MeshPayload)]
26pub struct VmWorkerParameters {
27 pub hypervisor: Resource<HypervisorKind>,
29 pub cfg: Config,
31 pub saved_state: Option<ProtobufMessage>,
33 pub shared_memory: Option<SharedMemoryFd>,
36 pub rpc: mesh::Receiver<VmRpc>,
38 pub notify: mesh::Sender<HaltReason>,
40}