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§

source

fn get_pt_by_virt_addr(&self, address: Address) -> Address

Retrieves page table address by virtual address

source

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.

source

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)

source

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§

source

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,

Object Safety§

This trait is not object safe.

Implementors§