[−][src]Trait x86_64::structures::paging::mapper::Mapper
A trait for common page table operations on pages of size S
.
Required methods
unsafe fn map_to<A>(
&mut self,
page: Page<S>,
frame: PhysFrame<S>,
flags: PageTableFlags,
frame_allocator: &mut A
) -> Result<MapperFlush<S>, MapToError> where
A: FrameAllocator<Size4KiB>,
&mut self,
page: Page<S>,
frame: PhysFrame<S>,
flags: PageTableFlags,
frame_allocator: &mut A
) -> Result<MapperFlush<S>, MapToError> where
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.
This function is unsafe because the caller must guarantee that passed frame
is
unused, i.e. not used for any other mappings.
fn unmap(
&mut self,
page: Page<S>
) -> Result<(PhysFrame<S>, MapperFlush<S>), UnmapError>
&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>
&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.
Provided methods
unsafe fn identity_map<A>(
&mut self,
frame: PhysFrame<S>,
flags: PageTableFlags,
frame_allocator: &mut A
) -> Result<MapperFlush<S>, MapToError> where
A: FrameAllocator<Size4KiB>,
S: PageSize,
Self: Mapper<S>,
&mut self,
frame: PhysFrame<S>,
flags: PageTableFlags,
frame_allocator: &mut A
) -> Result<MapperFlush<S>, MapToError> where
A: FrameAllocator<Size4KiB>,
S: PageSize,
Self: Mapper<S>,
Maps the given frame to the virtual page with the same address.
This function is unsafe because the caller must guarantee that the passed frame
is
unused, i.e. not used for any other mappings.
Implementors
impl<'a, PhysToVirt> Mapper<Size1GiB> for MappedPageTable<'a, PhysToVirt> where
PhysToVirt: Fn(PhysFrame) -> *mut PageTable,
[src]
PhysToVirt: Fn(PhysFrame) -> *mut PageTable,
unsafe fn map_to<A>(
&mut self,
page: Page<Size1GiB>,
frame: PhysFrame<Size1GiB>,
flags: PageTableFlags,
allocator: &mut A
) -> Result<MapperFlush<Size1GiB>, MapToError> where
A: FrameAllocator<Size4KiB>,
[src]
&mut self,
page: Page<Size1GiB>,
frame: PhysFrame<Size1GiB>,
flags: PageTableFlags,
allocator: &mut A
) -> Result<MapperFlush<Size1GiB>, MapToError> where
A: FrameAllocator<Size4KiB>,
fn unmap(
&mut self,
page: Page<Size1GiB>
) -> Result<(PhysFrame<Size1GiB>, MapperFlush<Size1GiB>), UnmapError>
[src]
&mut self,
page: Page<Size1GiB>
) -> Result<(PhysFrame<Size1GiB>, MapperFlush<Size1GiB>), UnmapError>
fn update_flags(
&mut self,
page: Page<Size1GiB>,
flags: PageTableFlags
) -> Result<MapperFlush<Size1GiB>, FlagUpdateError>
[src]
&mut self,
page: Page<Size1GiB>,
flags: PageTableFlags
) -> Result<MapperFlush<Size1GiB>, FlagUpdateError>
fn translate_page(
&self,
page: Page<Size1GiB>
) -> Result<PhysFrame<Size1GiB>, TranslateError>
[src]
&self,
page: Page<Size1GiB>
) -> Result<PhysFrame<Size1GiB>, TranslateError>
unsafe fn identity_map<A>(
&mut self,
frame: PhysFrame<S>,
flags: PageTableFlags,
frame_allocator: &mut A
) -> Result<MapperFlush<S>, MapToError> where
A: FrameAllocator<Size4KiB>,
S: PageSize,
Self: Mapper<S>,
[src]
&mut self,
frame: PhysFrame<S>,
flags: PageTableFlags,
frame_allocator: &mut A
) -> Result<MapperFlush<S>, MapToError> where
A: FrameAllocator<Size4KiB>,
S: PageSize,
Self: Mapper<S>,
impl<'a, PhysToVirt> Mapper<Size2MiB> for MappedPageTable<'a, PhysToVirt> where
PhysToVirt: Fn(PhysFrame) -> *mut PageTable,
[src]
PhysToVirt: Fn(PhysFrame) -> *mut PageTable,
unsafe fn map_to<A>(
&mut self,
page: Page<Size2MiB>,
frame: PhysFrame<Size2MiB>,
flags: PageTableFlags,
allocator: &mut A
) -> Result<MapperFlush<Size2MiB>, MapToError> where
A: FrameAllocator<Size4KiB>,
[src]
&mut self,
page: Page<Size2MiB>,
frame: PhysFrame<Size2MiB>,
flags: PageTableFlags,
allocator: &mut A
) -> Result<MapperFlush<Size2MiB>, MapToError> where
A: FrameAllocator<Size4KiB>,
fn unmap(
&mut self,
page: Page<Size2MiB>
) -> Result<(PhysFrame<Size2MiB>, MapperFlush<Size2MiB>), UnmapError>
[src]
&mut self,
page: Page<Size2MiB>
) -> Result<(PhysFrame<Size2MiB>, MapperFlush<Size2MiB>), UnmapError>
fn update_flags(
&mut self,
page: Page<Size2MiB>,
flags: PageTableFlags
) -> Result<MapperFlush<Size2MiB>, FlagUpdateError>
[src]
&mut self,
page: Page<Size2MiB>,
flags: PageTableFlags
) -> Result<MapperFlush<Size2MiB>, FlagUpdateError>
fn translate_page(
&self,
page: Page<Size2MiB>
) -> Result<PhysFrame<Size2MiB>, TranslateError>
[src]
&self,
page: Page<Size2MiB>
) -> Result<PhysFrame<Size2MiB>, TranslateError>
unsafe fn identity_map<A>(
&mut self,
frame: PhysFrame<S>,
flags: PageTableFlags,
frame_allocator: &mut A
) -> Result<MapperFlush<S>, MapToError> where
A: FrameAllocator<Size4KiB>,
S: PageSize,
Self: Mapper<S>,
[src]
&mut self,
frame: PhysFrame<S>,
flags: PageTableFlags,
frame_allocator: &mut A
) -> Result<MapperFlush<S>, MapToError> where
A: FrameAllocator<Size4KiB>,
S: PageSize,
Self: Mapper<S>,
impl<'a, PhysToVirt> Mapper<Size4KiB> for MappedPageTable<'a, PhysToVirt> where
PhysToVirt: Fn(PhysFrame) -> *mut PageTable,
[src]
PhysToVirt: Fn(PhysFrame) -> *mut PageTable,
unsafe fn map_to<A>(
&mut self,
page: Page<Size4KiB>,
frame: PhysFrame<Size4KiB>,
flags: PageTableFlags,
allocator: &mut A
) -> Result<MapperFlush<Size4KiB>, MapToError> where
A: FrameAllocator<Size4KiB>,
[src]
&mut self,
page: Page<Size4KiB>,
frame: PhysFrame<Size4KiB>,
flags: PageTableFlags,
allocator: &mut A
) -> Result<MapperFlush<Size4KiB>, MapToError> where
A: FrameAllocator<Size4KiB>,
fn unmap(
&mut self,
page: Page<Size4KiB>
) -> Result<(PhysFrame<Size4KiB>, MapperFlush<Size4KiB>), UnmapError>
[src]
&mut self,
page: Page<Size4KiB>
) -> Result<(PhysFrame<Size4KiB>, MapperFlush<Size4KiB>), UnmapError>
fn update_flags(
&mut self,
page: Page<Size4KiB>,
flags: PageTableFlags
) -> Result<MapperFlush<Size4KiB>, FlagUpdateError>
[src]
&mut self,
page: Page<Size4KiB>,
flags: PageTableFlags
) -> Result<MapperFlush<Size4KiB>, FlagUpdateError>
fn translate_page(
&self,
page: Page<Size4KiB>
) -> Result<PhysFrame<Size4KiB>, TranslateError>
[src]
&self,
page: Page<Size4KiB>
) -> Result<PhysFrame<Size4KiB>, TranslateError>
unsafe fn identity_map<A>(
&mut self,
frame: PhysFrame<S>,
flags: PageTableFlags,
frame_allocator: &mut A
) -> Result<MapperFlush<S>, MapToError> where
A: FrameAllocator<Size4KiB>,
S: PageSize,
Self: Mapper<S>,
[src]
&mut self,
frame: PhysFrame<S>,
flags: PageTableFlags,
frame_allocator: &mut A
) -> Result<MapperFlush<S>, MapToError> where
A: FrameAllocator<Size4KiB>,
S: PageSize,
Self: Mapper<S>,