debug_worker_defs/
lib.rs

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4//! Client definitions for the gdbstub debug worker.
5
6#![expect(missing_docs)]
7#![forbid(unsafe_code)]
8
9use mesh::MeshPayload;
10use mesh::payload::Protobuf;
11use mesh_worker::WorkerId;
12use std::net::TcpListener;
13use vmm_core_defs::debug_rpc::DebugRequest;
14
15#[derive(MeshPayload)]
16pub struct DebuggerParameters<T> {
17    pub listener: T,
18    pub req_chan: mesh::Sender<DebugRequest>,
19    pub vp_count: u32,
20    pub target_arch: TargetArch,
21}
22
23#[derive(Debug, Copy, Clone, Protobuf)]
24pub enum TargetArch {
25    X86_64,
26    I8086,
27    Aarch64,
28}
29
30pub const DEBUGGER_WORKER: WorkerId<DebuggerParameters<TcpListener>> =
31    WorkerId::new("DebuggerWorker");
32
33#[cfg(any(windows, target_os = "linux"))]
34pub const DEBUGGER_VSOCK_WORKER: WorkerId<DebuggerParameters<vmsocket::VmListener>> =
35    WorkerId::new("DebuggerVsockWorker");