vmm_core_defs/
lib.rs

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4//! Client definitions for functionality in the `vmm_core` crate.
5
6#![expect(missing_docs)]
7#![forbid(unsafe_code)]
8
9pub mod debug_rpc;
10
11use inspect::Inspect;
12use mesh::payload::Protobuf;
13use std::sync::Arc;
14
15/// HaltReason sent by devices and vp_set to the vmm.
16#[derive(Debug, Clone, Eq, PartialEq, Protobuf, Inspect)]
17#[inspect(tag = "halt_reason")]
18pub enum HaltReason {
19    PowerOff,
20    Reset,
21    Hibernate,
22    DebugBreak {
23        #[inspect(rename = "failing_vp")]
24        vp: Option<u32>,
25    },
26    TripleFault {
27        #[inspect(rename = "failing_vp")]
28        vp: u32,
29        #[inspect(skip)]
30        // Arc'ed for size and cheap clones.
31        registers: Option<Arc<virt::vp::Registers>>,
32    },
33    InvalidVmState {
34        #[inspect(rename = "failing_vp")]
35        vp: u32,
36    },
37    VpError {
38        #[inspect(rename = "failing_vp")]
39        vp: u32,
40    },
41    SingleStep {
42        #[inspect(rename = "failing_vp")]
43        vp: u32,
44    },
45    HwBreakpoint {
46        #[inspect(rename = "failing_vp")]
47        vp: u32,
48        #[inspect(skip)]
49        breakpoint: virt::x86::HardwareBreakpoint,
50    },
51}