Trait memflow::mem::virt_translate::mmu::MmuTranslationBase
source · pub trait MmuTranslationBase: Clone + Copy + Debug {
// Required methods
fn get_pt_by_virt_addr(&self, address: Address) -> Address;
fn get_pt_by_index(&self, idx: usize) -> (Address, usize);
fn pt_count(&self) -> usize;
fn virt_addr_filter<B: SplitAtIndex>(
&self,
spec: &ArchMmuSpec,
addr: CTup3<Address, Address, B>,
work_group: (&mut TranslationChunk<Self>, &mut FixedSliceVec<'_, TranslateData<B>>),
out_fail: &mut VtopFailureCallback<'_, B>
);
// Provided method
fn fill_init_chunk<VI, B>(
&self,
spec: &ArchMmuSpec,
out_fail: &mut VtopFailureCallback<'_, B>,
addrs: &mut VI,
(next_work_addrs, tmp_addrs): (&mut FixedSliceVec<'_, TranslateData<B>>, &mut FixedSliceVec<'_, TranslateData<B>>),
work_vecs: &mut (FixedSliceVec<'_, TranslationChunk<Address>>, FixedSliceVec<'_, TranslateData<B>>),
wait_vecs: &mut (FixedSliceVec<'_, TranslationChunk<Address>>, FixedSliceVec<'_, TranslateData<B>>)
)
where VI: Iterator<Item = CTup3<Address, Address, B>>,
B: SplitAtIndex { ... }
}
Required Methods§
sourcefn get_pt_by_virt_addr(&self, address: Address) -> Address
fn get_pt_by_virt_addr(&self, address: Address) -> Address
Retrieves page table address by virtual address
sourcefn get_pt_by_index(&self, idx: usize) -> (Address, usize)
fn get_pt_by_index(&self, idx: usize) -> (Address, usize)
Retrieves page table address, and its index by index within
For instance, on Arm index 257 would return kernel page table
address, and index 1. On X86, however, this is a no-op that returns
underlying page table Address and idx
.
sourcefn pt_count(&self) -> usize
fn pt_count(&self) -> usize
Retrieves number of page tables used by translation base. 1 on X86, 1-2 on Arm (Win32 Arm merges both page tables)
fn virt_addr_filter<B: SplitAtIndex>( &self, spec: &ArchMmuSpec, addr: CTup3<Address, Address, B>, work_group: (&mut TranslationChunk<Self>, &mut FixedSliceVec<'_, TranslateData<B>>), out_fail: &mut VtopFailureCallback<'_, B> )
Provided Methods§
fn fill_init_chunk<VI, B>( &self, spec: &ArchMmuSpec, out_fail: &mut VtopFailureCallback<'_, B>, addrs: &mut VI, (next_work_addrs, tmp_addrs): (&mut FixedSliceVec<'_, TranslateData<B>>, &mut FixedSliceVec<'_, TranslateData<B>>), work_vecs: &mut (FixedSliceVec<'_, TranslationChunk<Address>>, FixedSliceVec<'_, TranslateData<B>>), wait_vecs: &mut (FixedSliceVec<'_, TranslationChunk<Address>>, FixedSliceVec<'_, TranslateData<B>>) )
Object Safety§
This trait is not object safe.