Struct seed_riscv::memory::MemoryManager

source ·
pub struct MemoryManager(Spinlock<MemoryManagerInner>);
Expand description

The physical memory manager - this consumes a MemoryRegions map, and uses it to initialise an instrusive free list of all usable physical memory. This can then be used to allocate physical memory as needed, at frame granularity.

Tuple Fields§

§0: Spinlock<MemoryManagerInner>

Implementations§

source§

impl MemoryManager

source

pub const fn new() -> MemoryManager

source

pub fn init(&self, regions: MemoryRegions)

source

pub fn walk_usable_memory(&self)

source

pub fn populate_memory_map(&self, memory_map: &mut MemoryMap)

Trait Implementations§

source§

impl FrameAllocator<Size4KiB> for MemoryManager

source§

fn allocate_n(&self, n: usize) -> Range<Frame<Size4KiB>>

Allocate n contiguous Frames.
source§

fn free_n(&self, _start: Frame<Size4KiB>, _n: usize)

Free n frames that were previously allocated by this allocator.
source§

fn allocate(&self) -> Frame<S>

Allocate a Frame. Read more
source§

impl Mapper for MemoryManager

source§

fn alloc(&self, size: usize) -> (usize, usize)

Allocate size bytes of zeroed memory, and return the physical and virtual addresses.
source§

impl Send for MemoryManager

source§

impl Sync for MemoryManager

Auto Trait Implementations§

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> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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>,

§

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

§

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.