chipset_device_worker/
lib.rs

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4//! A worker that runs chipset devices in a separate process.
5
6// UNSAFETY: The guest_memory_proxy module implements GuestMemoryAccess which
7// requires unsafe code to work with raw pointers for reading/writing guest memory.
8#![expect(unsafe_code)]
9
10use mesh::MeshPayload;
11
12mod guestmem;
13mod protocol;
14mod proxy;
15pub mod resolver;
16pub mod worker;
17
18/// Trait for registering dynamic resolvers needed for remote chipset devices.
19pub trait RemoteDynamicResolvers: MeshPayload + Send + Sync + Clone + 'static {
20    /// Worker ID string for this remote chipset device worker.
21    const WORKER_ID_STR: &str;
22
23    #[allow(async_fn_in_trait)]
24    /// Register dynamic resolvers needed for remote chipset devices.
25    async fn register_remote_dynamic_resolvers(
26        self,
27        resolver: &mut vm_resource::ResourceResolver,
28    ) -> anyhow::Result<()>;
29}