pub struct PagingMPU<'a> { /* private fields */ }
Implementations§
Source§impl<'a> PagingMPU<'a>
impl<'a> PagingMPU<'a>
pub unsafe fn new( page_dir: &'a mut PD, page_dir_paddr: usize, page_table: &'a mut PT, page_table_paddr: usize, ) -> Self
Sourcepub unsafe fn iterate_pt<C>(&self, closure: C)
pub unsafe fn iterate_pt<C>(&self, closure: C)
Basic iterator to walk through all page table entries
Sourcepub fn pt_from_addr<C>(&self, closure: C, virtual_addr: usize)
pub fn pt_from_addr<C>(&self, closure: C, virtual_addr: usize)
Get a page table entry from a virtual address
Sourcepub unsafe fn initialize_page_tables(&self)
pub unsafe fn initialize_page_tables(&self)
initializes the page directory & page table
Trait Implementations§
Source§impl MPU for PagingMPU<'_>
impl MPU for PagingMPU<'_>
Source§fn number_total_regions(&self) -> usize
fn number_total_regions(&self) -> usize
Returns the maximum number of regions supported by the MPU.
Source§type MpuConfig = MemoryProtectionConfig
type MpuConfig = MemoryProtectionConfig
MPU-specific state that defines a particular configuration for the MPU.
That is, this should contain all of the required state such that the
implementation can be passed an object of this type and it should be
able to correctly and entirely configure the MPU. Read more
Source§fn new_config(&self) -> Option<Self::MpuConfig>
fn new_config(&self) -> Option<Self::MpuConfig>
Creates a new empty MPU configuration. Read more
Source§fn reset_config(&self, config: &mut Self::MpuConfig)
fn reset_config(&self, config: &mut Self::MpuConfig)
Resets an MPU configuration. Read more
Source§fn enable_app_mpu(&self)
fn enable_app_mpu(&self)
Enables the MPU for userspace apps. Read more
Source§fn disable_app_mpu(&self)
fn disable_app_mpu(&self)
Disables the MPU for userspace apps. Read more
Source§fn allocate_region(
&self,
unallocated_memory_start: *const u8,
unallocated_memory_size: usize,
min_region_size: usize,
permissions: Permissions,
config: &mut Self::MpuConfig,
) -> Option<Region>
fn allocate_region( &self, unallocated_memory_start: *const u8, unallocated_memory_size: usize, min_region_size: usize, permissions: Permissions, config: &mut Self::MpuConfig, ) -> Option<Region>
Allocates a new MPU region. Read more
Source§fn remove_memory_region(
&self,
region: Region,
config: &mut Self::MpuConfig,
) -> Result<(), ()>
fn remove_memory_region( &self, region: Region, config: &mut Self::MpuConfig, ) -> Result<(), ()>
Removes an MPU region within app-owned memory. Read more
Source§fn allocate_app_memory_region(
&self,
unallocated_memory_start: *const u8,
unallocated_memory_size: usize,
min_memory_size: usize,
initial_app_memory_size: usize,
initial_kernel_memory_size: usize,
permissions: Permissions,
config: &mut Self::MpuConfig,
) -> Option<(*const u8, usize)>
fn allocate_app_memory_region( &self, unallocated_memory_start: *const u8, unallocated_memory_size: usize, min_memory_size: usize, initial_app_memory_size: usize, initial_kernel_memory_size: usize, permissions: Permissions, config: &mut Self::MpuConfig, ) -> Option<(*const u8, usize)>
Chooses the location for a process’s memory, and allocates an MPU region
covering the app-owned part. Read more
Source§fn update_app_memory_region(
&self,
app_memory_break: *const u8,
kernel_memory_break: *const u8,
_permissions: Permissions,
config: &mut Self::MpuConfig,
) -> Result<(), ()>
fn update_app_memory_region( &self, app_memory_break: *const u8, kernel_memory_break: *const u8, _permissions: Permissions, config: &mut Self::MpuConfig, ) -> Result<(), ()>
Updates the MPU region for app-owned memory. Read more
Source§fn configure_mpu(&self, config: &Self::MpuConfig)
fn configure_mpu(&self, config: &Self::MpuConfig)
Configures the MPU with the provided region configuration. Read more
Auto Trait Implementations§
impl<'a> !Freeze for PagingMPU<'a>
impl<'a> !RefUnwindSafe for PagingMPU<'a>
impl<'a> Send for PagingMPU<'a>
impl<'a> !Sync for PagingMPU<'a>
impl<'a> Unpin for PagingMPU<'a>
impl<'a> !UnwindSafe for PagingMPU<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more