pub struct VirtualMemoryManager { /* private fields */ }Expand description
Virtual memory manager for a process
Implementations§
Source§impl VirtualMemoryManager
impl VirtualMemoryManager
Sourcepub fn new() -> Result<Self, KernelError>
pub fn new() -> Result<Self, KernelError>
Create a new virtual memory manager
Sourcepub fn new_kernel() -> Result<Self, KernelError>
pub fn new_kernel() -> Result<Self, KernelError>
Create a kernel virtual memory manager
Sourcepub fn map(
&mut self,
virt: VirtualAddress,
phys: PhysicalAddress,
flags: PageFlags,
size: PageSize,
) -> Result<(), KernelError>
pub fn map( &mut self, virt: VirtualAddress, phys: PhysicalAddress, flags: PageFlags, size: PageSize, ) -> Result<(), KernelError>
Map a virtual address to a physical address
Sourcepub fn unmap(&mut self, virt: VirtualAddress) -> Result<(), KernelError>
pub fn unmap(&mut self, virt: VirtualAddress) -> Result<(), KernelError>
Unmap a virtual address
Sourcepub fn map_guard_page(
&mut self,
virt: VirtualAddress,
) -> Result<(), KernelError>
pub fn map_guard_page( &mut self, virt: VirtualAddress, ) -> Result<(), KernelError>
Map a guard page at the given virtual address.
A guard page is an unmapped page that triggers a page fault on access, used to detect stack overflows. The page is left unmapped (no physical backing) so any read/write/execute will trap.
Sourcepub fn translate(&self, virt: VirtualAddress) -> Option<PhysicalAddress>
pub fn translate(&self, virt: VirtualAddress) -> Option<PhysicalAddress>
Translate a virtual address to physical
Sourcepub fn load_bootloader_mappings(
&mut self,
memory_map: &[MemoryRegion],
) -> Result<(), KernelError>
pub fn load_bootloader_mappings( &mut self, memory_map: &[MemoryRegion], ) -> Result<(), KernelError>
Load memory mappings from bootloader