Struct PagingMPU

Source
pub struct PagingMPU<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> PagingMPU<'a>

Source

pub unsafe fn new( page_dir: &'a mut PD, page_dir_paddr: usize, page_table: &'a mut PT, page_table_paddr: usize, ) -> Self

Source

pub unsafe fn iterate_pt<C>(&self, closure: C)
where C: FnMut(usize, &mut PTEntry),

Basic iterator to walk through all page table entries

Source

pub fn pt_from_addr<C>(&self, closure: C, virtual_addr: usize)
where C: FnMut(&mut PTEntry),

Get a page table entry from a virtual address

Source

pub unsafe fn initialize_page_tables(&self)

initializes the page directory & page table

Source

pub fn init(&self)

General init function This function automatically sets the page directory and page table, and then enables Paging

Trait Implementations§

Source§

impl Display for PagingMPU<'_>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl MPU for PagingMPU<'_>

Source§

fn number_total_regions(&self) -> usize

Returns the maximum number of regions supported by the MPU.

Source§

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>

Creates a new empty MPU configuration. Read more
Source§

fn reset_config(&self, config: &mut Self::MpuConfig)

Resets an MPU configuration. Read more
Source§

fn enable_app_mpu(&self)

Enables the MPU for userspace apps. Read more
Source§

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>

Allocates a new MPU region. Read more
Source§

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)>

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<(), ()>

Updates the MPU region for app-owned memory. Read more
Source§

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.