Skip to main content

ExecutionBackend

Trait ExecutionBackend 

Source
pub trait ExecutionBackend: Send {
    // Required methods
    fn reset(&mut self, config: &MachineConfig) -> Result<()>;
    fn step(&mut self) -> Result<bool>;
    fn read_memory(&self, address: u64, buffer: &mut [u8]) -> Result<()>;
    fn write_memory(&mut self, address: u64, data: &[u8]) -> Result<()>;

    // Provided methods
    fn restore_state(&mut self, _state: &SavedState) -> Result<()> { ... }
    fn vga_framebuffer_rgb(&self) -> Option<(u32, u32, Vec<u8>)> { ... }
    fn inject_text(&mut self, _text: &str) -> Result<usize> { ... }
}

Required Methods§

Source

fn reset(&mut self, config: &MachineConfig) -> Result<()>

Source

fn step(&mut self) -> Result<bool>

Source

fn read_memory(&self, address: u64, buffer: &mut [u8]) -> Result<()>

Source

fn write_memory(&mut self, address: u64, data: &[u8]) -> Result<()>

Provided Methods§

Source

fn restore_state(&mut self, _state: &SavedState) -> Result<()>

Restore an attached v86 saved state after reset. Backends that do not support saved states may keep the default no-op implementation.

Source

fn vga_framebuffer_rgb(&self) -> Option<(u32, u32, Vec<u8>)>

Return the current guest framebuffer as packed RGB bytes when the backend exposes a graphical VGA mode.

Source

fn inject_text(&mut self, _text: &str) -> Result<usize>

Queue host text as guest keyboard input when supported by the backend.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§