[][src]Trait x86_64::structures::paging::mapper::Mapper

pub trait Mapper<S: PageSize> {
    fn map_to<A>(
        &mut self,
        page: Page<S>,
        frame: UnusedPhysFrame<S>,
        flags: PageTableFlags,
        frame_allocator: &mut A
    ) -> Result<MapperFlush<S>, MapToError<S>>
    where
        Self: Sized,
        A: FrameAllocator<Size4KiB>
;
fn unmap(
        &mut self,
        page: Page<S>
    ) -> Result<(PhysFrame<S>, MapperFlush<S>), UnmapError>;
fn update_flags(
        &mut self,
        page: Page<S>,
        flags: PageTableFlags
    ) -> Result<MapperFlush<S>, FlagUpdateError>;
fn translate_page(
        &self,
        page: Page<S>
    ) -> Result<PhysFrame<S>, TranslateError>; unsafe fn identity_map<A>(
        &mut self,
        frame: UnusedPhysFrame<S>,
        flags: PageTableFlags,
        frame_allocator: &mut A
    ) -> Result<MapperFlush<S>, MapToError<S>>
    where
        Self: Sized,
        A: FrameAllocator<Size4KiB>,
        S: PageSize,
        Self: Mapper<S>
, { ... } }

A trait for common page table operations on pages of size S.

Required methods

fn map_to<A>(
    &mut self,
    page: Page<S>,
    frame: UnusedPhysFrame<S>,
    flags: PageTableFlags,
    frame_allocator: &mut A
) -> Result<MapperFlush<S>, MapToError<S>> where
    Self: Sized,
    A: FrameAllocator<Size4KiB>, 

Creates a new mapping in the page table.

This function might need additional physical frames to create new page tables. These frames are allocated from the allocator argument. At most three frames are required.

fn unmap(
    &mut self,
    page: Page<S>
) -> Result<(PhysFrame<S>, MapperFlush<S>), UnmapError>

Removes a mapping from the page table and returns the frame that used to be mapped.

Note that no page tables or pages are deallocated.

fn update_flags(
    &mut self,
    page: Page<S>,
    flags: PageTableFlags
) -> Result<MapperFlush<S>, FlagUpdateError>

Updates the flags of an existing mapping.

fn translate_page(&self, page: Page<S>) -> Result<PhysFrame<S>, TranslateError>

Return the frame that the specified page is mapped to.

This function assumes that the page is mapped to a frame of size S and returns an error otherwise.

Loading content...

Provided methods

unsafe fn identity_map<A>(
    &mut self,
    frame: UnusedPhysFrame<S>,
    flags: PageTableFlags,
    frame_allocator: &mut A
) -> Result<MapperFlush<S>, MapToError<S>> where
    Self: Sized,
    A: FrameAllocator<Size4KiB>,
    S: PageSize,
    Self: Mapper<S>, 

Maps the given frame to the virtual page with the same address.

Loading content...

Implementors

impl<'a> Mapper<Size1GiB> for OffsetPageTable<'a>[src]

impl<'a> Mapper<Size1GiB> for RecursivePageTable<'a>[src]

impl<'a> Mapper<Size2MiB> for OffsetPageTable<'a>[src]

impl<'a> Mapper<Size2MiB> for RecursivePageTable<'a>[src]

impl<'a> Mapper<Size4KiB> for OffsetPageTable<'a>[src]

impl<'a> Mapper<Size4KiB> for RecursivePageTable<'a>[src]

impl<'a, P: PhysToVirt> Mapper<Size1GiB> for MappedPageTable<'a, P>[src]

impl<'a, P: PhysToVirt> Mapper<Size2MiB> for MappedPageTable<'a, P>[src]

impl<'a, P: PhysToVirt> Mapper<Size4KiB> for MappedPageTable<'a, P>[src]

Loading content...