use ax_memory_addr::MemoryAddr;
pub trait MappingBackend: Clone {
type Addr: MemoryAddr;
type Flags: Copy;
type PageTable;
fn map(
&self,
start: Self::Addr,
size: usize,
flags: Self::Flags,
page_table: &mut Self::PageTable,
) -> bool;
fn unmap(&self, start: Self::Addr, size: usize, page_table: &mut Self::PageTable) -> bool;
fn protect(
&self,
start: Self::Addr,
size: usize,
new_flags: Self::Flags,
page_table: &mut Self::PageTable,
) -> bool;
fn split(&mut self, align_diff: usize) -> Option<Self>;
fn shrink_left(&mut self, _shrink_size: usize) {}
fn shrink_right(&mut self, _shrink_size: usize) {}
}