marcel_os::memory

Struct BootInfoFrameAllocator

Source
pub struct BootInfoFrameAllocator { /* private fields */ }
Expand description

A frame allocator that uses the bootloader’s memory map to allocate usable memory frames.

This allocator is initialized with the memory map provided by the bootloader and iterates over the usable memory regions to allocate physical memory frames. It only returns frames from memory regions marked as “Usable.”

Implementations§

Source§

impl BootInfoFrameAllocator

Source

pub unsafe fn init(memory_map: &'static MemoryMap) -> Self

Initializes the BootInfoFrameAllocator from the bootloader-provided memory map.

This function sets up the allocator to iterate over the usable regions in the memory map.

§Arguments
  • memory_map - The memory map provided by the bootloader, detailing the memory regions.
§Safety

This function is unsafe because it relies on the structure and validity of the memory map.

Trait Implementations§

Source§

impl FrameAllocator<Size4KiB> for BootInfoFrameAllocator

Allocates memory frames from the usable regions of physical memory.

This implementation of FrameAllocator uses the bootloader’s memory map to allocate usable memory frames for the kernel.

Source§

fn allocate_frame(&mut self) -> Option<PhysFrame>

Allocate a frame of the appropriate size and return it if possible.

Auto Trait Implementations§

§

impl Freeze for BootInfoFrameAllocator

§

impl RefUnwindSafe for BootInfoFrameAllocator

§

impl Send for BootInfoFrameAllocator

§

impl Sync for BootInfoFrameAllocator

§

impl Unpin for BootInfoFrameAllocator

§

impl UnwindSafe for BootInfoFrameAllocator

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

fn into(self) -> U

Calls U::from(self).

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

§

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

§

type Error = Infallible

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

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

Performs the conversion.
§

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.
§

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

Performs the conversion.