25 lines
593 B
Rust
25 lines
593 B
Rust
use crate::hardware_bridge::HardwareBridge;
|
|
use prometeu_abi::virtual_machine::VmFault;
|
|
|
|
pub struct HostContext<'a> {
|
|
pub hw: Option<&'a mut dyn HardwareBridge>,
|
|
}
|
|
|
|
impl<'a> HostContext<'a> {
|
|
pub fn new(hw: Option<&'a mut dyn HardwareBridge>) -> Self {
|
|
Self { hw }
|
|
}
|
|
|
|
#[inline]
|
|
pub fn require_hw(&mut self) -> Result<&mut dyn HardwareBridge, VmFault> {
|
|
match &mut self.hw {
|
|
Some(hw) => Ok(*hw),
|
|
None => Err(VmFault::Unavailable),
|
|
}
|
|
}
|
|
}
|
|
|
|
pub trait HostContextProvider {
|
|
fn make_ctx(&'_ mut self) -> HostContext<'_>;
|
|
}
|