vmi_utils/bpm/controller/
mod.rsmod breakpoint;
mod memory;
use vmi_core::{Gfn, Pa, View, VmiCore, VmiDriver, VmiError, VmiEvent};
pub use self::{breakpoint::BreakpointController, memory::MemoryController};
pub trait TapController {
type Driver: VmiDriver;
fn new() -> Self;
fn check_event(
&self,
event: &VmiEvent<<Self::Driver as VmiDriver>::Architecture>,
) -> Option<(View, Gfn)>;
fn insert_breakpoint(
&mut self,
vmi: &VmiCore<Self::Driver>,
pa: Pa,
view: View,
) -> Result<(), VmiError>;
fn remove_breakpoint(
&mut self,
vmi: &VmiCore<Self::Driver>,
pa: Pa,
view: View,
) -> Result<(), VmiError>;
fn monitor(
&mut self,
vmi: &VmiCore<Self::Driver>,
gfn: Gfn,
view: View,
) -> Result<(), VmiError>;
fn unmonitor(
&mut self,
vmi: &VmiCore<Self::Driver>,
gfn: Gfn,
view: View,
) -> Result<(), VmiError>;
}