1use gdbstub::arch::Arch;
6#[cfg(target_arch = "aarch64")]
7use gdbstub_arch::aarch64::AArch64 as GdbArch;
8#[cfg(target_arch = "riscv64")]
9use gdbstub_arch::riscv::Riscv64 as GdbArch;
10#[cfg(target_arch = "x86_64")]
11use gdbstub_arch::x86::X86_64_SSE as GdbArch;
12use vm_memory::GuestAddress;
13
14#[derive(Clone, Debug)]
16pub enum VcpuDebug {
17 ReadMem(GuestAddress, usize),
18 ReadRegs,
19 ReadReg(<GdbArch as Arch>::RegId),
20 WriteRegs(Box<<GdbArch as Arch>::Registers>),
21 WriteReg(<GdbArch as Arch>::RegId, Vec<u8>),
22 WriteMem(GuestAddress, Vec<u8>),
23 EnableSinglestep,
24 GetHwBreakPointCount,
25 SetHwBreakPoint(Vec<GuestAddress>),
26}
27
28#[allow(clippy::large_enum_variant)]
30#[derive(Debug)]
31pub enum VcpuDebugStatus {
32 RegValues(<GdbArch as Arch>::Registers),
33 RegValue(Vec<u8>),
34 MemoryRegion(Vec<u8>),
35 CommandComplete,
36 HwBreakPointCount(usize),
37 HitBreakPoint,
38}
39
40#[derive(Debug)]
43pub struct VcpuDebugStatusMessage {
44 pub cpu: usize,
45 pub msg: VcpuDebugStatus,
46}