Struct kernel::mem::page_table::PageTable
source · #[repr(C)]pub struct PageTable {
root_frame_number: FrameNumber,
frame_list: Vec<FrameTracker>,
}
Fields§
§root_frame_number: FrameNumber
§frame_list: Vec<FrameTracker>
Implementations§
source§impl PageTable
impl PageTable
pub fn new() -> Self
sourcepub fn satp(&self) -> usize
pub fn satp(&self) -> usize
Returns the value of the satp
register that points to the page table.
sourcepub fn from_satp(satp: usize) -> Self
pub fn from_satp(satp: usize) -> Self
Creates a PageTable where the root_frame_number
points to the frame in the satp
register.
sourcepub fn map(
&mut self,
page_number: PageNumber,
frame_number: FrameNumber,
flags: PTEFlags
)
pub fn map( &mut self, page_number: PageNumber, frame_number: FrameNumber, flags: PTEFlags )
Maps a PageNumber to a FrameNumber and sets the PageTableEntry with PTEFlags.
sourcepub fn unmap(&mut self, page_number: PageNumber)
pub fn unmap(&mut self, page_number: PageNumber)
Clears the PageTableEntry corresponding to the PageNumber.
sourcepub fn translate(
&self,
virtual_address: VirtualAddress
) -> Option<PhysicalAddress>
pub fn translate( &self, virtual_address: VirtualAddress ) -> Option<PhysicalAddress>
Finds the page table with a VirtualAddress and returns a PhysicalAddress.
sourcepub fn translate_page(&self, page_number: PageNumber) -> Option<PageTableEntry>
pub fn translate_page(&self, page_number: PageNumber) -> Option<PageTableEntry>
Finds the page table with a PageNumber and returns a PageTableEntry.
sourcefn find_pte(&self, page_number: PageNumber) -> Option<&mut PageTableEntry>
fn find_pte(&self, page_number: PageNumber) -> Option<&mut PageTableEntry>
Finds the page table with a PageNumber and returns a mutable reference to a PageTableEntry.
sourcefn create_pte(&mut self, page_number: PageNumber) -> Option<&mut PageTableEntry>
fn create_pte(&mut self, page_number: PageNumber) -> Option<&mut PageTableEntry>
Finds the page table with a PageNumber and returns a mutable reference to a PageTableEntry. Creates a new PageTableEntry if not existed.