Struct good_os_framework::memory::GeneralPageTable

source ·
pub struct GeneralPageTable {
    pub inner: OffsetPageTable<'static>,
    pub physical_address: PhysAddr,
}

Fields§

§inner: OffsetPageTable<'static>§physical_address: PhysAddr

Implementations§

source§

impl GeneralPageTable

source

pub unsafe fn switch(&self)

source

pub unsafe fn new_from_address( frame_allocator: &mut BitmapFrameAllocator, physical_address: PhysAddr, ) -> GeneralPageTable

source

pub unsafe fn ref_from_current() -> Self

source§

impl GeneralPageTable

source

pub fn read( &self, address: VirtAddr, len: usize, buffer: &mut [u8], ) -> Result<(), ()>

source

pub fn write(&self, buffer: &[u8], address: VirtAddr) -> Result<(), ()>

Trait Implementations§

source§

impl CleanUp for GeneralPageTable

source§

unsafe fn clean_up<D>(&mut self, frame_deallocator: &mut D)

Remove all empty P1-P3 tables Read more
source§

unsafe fn clean_up_addr_range<D>( &mut self, range: PageRangeInclusive, frame_deallocator: &mut D, )

Remove all empty P1-P3 tables in a certain range Read more
source§

impl Debug for GeneralPageTable

source§

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

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

impl Mapper<Size4KiB> for GeneralPageTable

source§

unsafe fn map_to_with_table_flags<A>( &mut self, page: Page<Size4KiB>, frame: PhysFrame<Size4KiB>, flags: PageTableFlags, parent_table_flags: PageTableFlags, allocator: &mut A, ) -> Result<MapperFlush<Size4KiB>, MapToError<Size4KiB>>

Creates a new mapping in the page table. Read more
source§

fn unmap( &mut self, page: Page<Size4KiB>, ) -> Result<(PhysFrame<Size4KiB>, MapperFlush<Size4KiB>), UnmapError>

Removes a mapping from the page table and returns the frame that used to be mapped. Read more
source§

unsafe fn update_flags( &mut self, page: Page<Size4KiB>, flags: PageTableFlags, ) -> Result<MapperFlush<Size4KiB>, FlagUpdateError>

Updates the flags of an existing mapping. Read more
source§

unsafe fn set_flags_p4_entry( &mut self, page: Page<Size4KiB>, flags: PageTableFlags, ) -> Result<MapperFlushAll, FlagUpdateError>

Set the flags of an existing page level 4 table entry Read more
source§

unsafe fn set_flags_p3_entry( &mut self, page: Page<Size4KiB>, flags: PageTableFlags, ) -> Result<MapperFlushAll, FlagUpdateError>

Set the flags of an existing page table level 3 entry Read more
source§

unsafe fn set_flags_p2_entry( &mut self, page: Page<Size4KiB>, flags: PageTableFlags, ) -> Result<MapperFlushAll, FlagUpdateError>

Set the flags of an existing page table level 2 entry Read more
source§

fn translate_page( &self, page: Page<Size4KiB>, ) -> Result<PhysFrame<Size4KiB>, TranslateError>

Return the frame that the specified page is mapped to. Read more
source§

unsafe fn map_to<A>( &mut self, page: Page<S>, frame: PhysFrame<S>, flags: PageTableFlags, frame_allocator: &mut A, ) -> Result<MapperFlush<S>, MapToError<S>>
where Self: Sized, A: FrameAllocator<Size4KiB> + ?Sized,

Creates a new mapping in the page table. Read more
source§

unsafe fn identity_map<A>( &mut self, frame: PhysFrame<S>, flags: PageTableFlags, frame_allocator: &mut A, ) -> Result<MapperFlush<S>, MapToError<S>>
where Self: Sized + Mapper<S>, A: FrameAllocator<Size4KiB> + ?Sized, S: PageSize,

Maps the given frame to the virtual page with the same address. Read more
source§

impl Translate for GeneralPageTable

source§

fn translate(&self, addr: VirtAddr) -> TranslateResult

Return the frame that the given virtual address is mapped to and the offset within that frame. Read more
source§

fn translate_addr(&self, addr: VirtAddr) -> Option<PhysAddr>

Translates the given virtual address to the physical address that it maps to. Read more

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> Colorize for T
where T: ?Sized,

source§

fn into_style(self) -> StyledValue<Self>
where Self: Sized,

Convert a value to a StyledValue
source§

fn style(&self) -> StyledValue<&Self>

Convert a value to a StyledValue
source§

fn into_style_with<F, B, U>( self, style: Style<F, B, U>, ) -> StyledValue<Self, F, B, U>
where Self: Sized,

Convert a value to a StyledValue and applies the given style
source§

fn style_with<F, B, U>( &self, style: Style<F, B, U>, ) -> StyledValue<&Self, F, B, U>

Convert a value to a StyledValue and applies the given style
source§

fn fg<C>(&self, color: C) -> StyledValue<&Self, C>

Changes the foreground color
source§

fn into_fg<C>(self, color: C) -> StyledValue<Self, C>
where Self: Sized,

Changes the foreground color
source§

fn bg<C>(&self, color: C) -> StyledValue<&Self, NoColor, C>

Changes the background color
source§

fn into_bg<C>(self, color: C) -> StyledValue<Self, NoColor, C>
where Self: Sized,

Changes the background color
source§

fn underline_color<C>( &self, color: C, ) -> StyledValue<&Self, NoColor, NoColor, C>

Changes the underline color
source§

fn into_underline_color<C>( self, color: C, ) -> StyledValue<Self, NoColor, NoColor, C>
where Self: Sized,

Changes the underline color
source§

fn black(&self) -> StyledValue<&Self, Black>

Changes the foreground to black
source§

fn red(&self) -> StyledValue<&Self, Red>

Changes the foreground to red
source§

fn green(&self) -> StyledValue<&Self, Green>

Changes the foreground to green
source§

fn yellow(&self) -> StyledValue<&Self, Yellow>

Changes the foreground to yellow
source§

fn blue(&self) -> StyledValue<&Self, Blue>

Changes the foreground to blue
source§

fn magenta(&self) -> StyledValue<&Self, Magenta>

Changes the foreground to magenta
source§

fn cyan(&self) -> StyledValue<&Self, Cyan>

Changes the foreground to cyan
source§

fn white(&self) -> StyledValue<&Self, White>

Changes the foreground to white
source§

fn bright_black(&self) -> StyledValue<&Self, BrightBlack>

Changes the foreground to bright black
source§

fn bright_red(&self) -> StyledValue<&Self, BrightRed>

Changes the foreground to bright red
source§

fn bright_green(&self) -> StyledValue<&Self, BrightGreen>

Changes the foreground to bright green
source§

fn bright_yellow(&self) -> StyledValue<&Self, BrightYellow>

Changes the foreground to bright yellow
source§

fn bright_blue(&self) -> StyledValue<&Self, BrightBlue>

Changes the foreground to bright blue
source§

fn bright_magenta(&self) -> StyledValue<&Self, BrightMagenta>

Changes the foreground to bright magenta
source§

fn bright_cyan(&self) -> StyledValue<&Self, BrightCyan>

Changes the foreground to bright cyan
source§

fn bright_white(&self) -> StyledValue<&Self, BrightWhite>

Changes the foreground to bright white
source§

fn on_black(&self) -> StyledValue<&Self, NoColor, Black>

Changes the background to black
source§

fn on_red(&self) -> StyledValue<&Self, NoColor, Red>

Changes the background to red
source§

fn on_green(&self) -> StyledValue<&Self, NoColor, Green>

Changes the background to green
source§

fn on_yellow(&self) -> StyledValue<&Self, NoColor, Yellow>

Changes the background to yellow
source§

fn on_blue(&self) -> StyledValue<&Self, NoColor, Blue>

Changes the background to blue
source§

fn on_magenta(&self) -> StyledValue<&Self, NoColor, Magenta>

Changes the background to magenta
source§

fn on_cyan(&self) -> StyledValue<&Self, NoColor, Cyan>

Changes the background to cyan
source§

fn on_white(&self) -> StyledValue<&Self, NoColor, White>

Changes the background to white
source§

fn on_bright_black(&self) -> StyledValue<&Self, NoColor, BrightBlack>

Changes the background to bright black
source§

fn on_bright_red(&self) -> StyledValue<&Self, NoColor, BrightRed>

Changes the background to bright red
source§

fn on_bright_green(&self) -> StyledValue<&Self, NoColor, BrightGreen>

Changes the background to bright green
source§

fn on_bright_yellow(&self) -> StyledValue<&Self, NoColor, BrightYellow>

Changes the background to bright yellow
source§

fn on_bright_blue(&self) -> StyledValue<&Self, NoColor, BrightBlue>

Changes the background to bright blue
source§

fn on_bright_magenta(&self) -> StyledValue<&Self, NoColor, BrightMagenta>

Changes the background to bright magenta
source§

fn on_bright_cyan(&self) -> StyledValue<&Self, NoColor, BrightCyan>

Changes the background to bright cyan
source§

fn on_bright_white(&self) -> StyledValue<&Self, NoColor, BrightWhite>

Changes the background to bright white
source§

fn into_black(self) -> StyledValue<Self, Black>
where Self: Sized,

Changes the foreground to black
source§

fn into_red(self) -> StyledValue<Self, Red>
where Self: Sized,

Changes the foreground to red
source§

fn into_green(self) -> StyledValue<Self, Green>
where Self: Sized,

Changes the foreground to green
source§

fn into_yellow(self) -> StyledValue<Self, Yellow>
where Self: Sized,

Changes the foreground to yellow
source§

fn into_blue(self) -> StyledValue<Self, Blue>
where Self: Sized,

Changes the foreground to blue
source§

fn into_magenta(self) -> StyledValue<Self, Magenta>
where Self: Sized,

Changes the foreground to magenta
source§

fn into_cyan(self) -> StyledValue<Self, Cyan>
where Self: Sized,

Changes the foreground to cyan
source§

fn into_white(self) -> StyledValue<Self, White>
where Self: Sized,

Changes the foreground to white
source§

fn into_bright_black(self) -> StyledValue<Self, BrightBlack>
where Self: Sized,

Changes the foreground to bright black
source§

fn into_bright_red(self) -> StyledValue<Self, BrightRed>
where Self: Sized,

Changes the foreground to bright red
source§

fn into_bright_green(self) -> StyledValue<Self, BrightGreen>
where Self: Sized,

Changes the foreground to bright green
source§

fn into_bright_yellow(self) -> StyledValue<Self, BrightYellow>
where Self: Sized,

Changes the foreground to bright yellow
source§

fn into_bright_blue(self) -> StyledValue<Self, BrightBlue>
where Self: Sized,

Changes the foreground to bright blue
source§

fn into_bright_magenta(self) -> StyledValue<Self, BrightMagenta>
where Self: Sized,

Changes the foreground to bright magenta
source§

fn into_bright_cyan(self) -> StyledValue<Self, BrightCyan>
where Self: Sized,

Changes the foreground to bright cyan
source§

fn into_bright_white(self) -> StyledValue<Self, BrightWhite>
where Self: Sized,

Changes the foreground to bright white
source§

fn into_on_black(self) -> StyledValue<Self, NoColor, Black>
where Self: Sized,

Changes the background to black
source§

fn into_on_red(self) -> StyledValue<Self, NoColor, Red>
where Self: Sized,

Changes the background to red
source§

fn into_on_green(self) -> StyledValue<Self, NoColor, Green>
where Self: Sized,

Changes the background to green
source§

fn into_on_yellow(self) -> StyledValue<Self, NoColor, Yellow>
where Self: Sized,

Changes the background to yellow
source§

fn into_on_blue(self) -> StyledValue<Self, NoColor, Blue>
where Self: Sized,

Changes the background to blue
source§

fn into_on_magenta(self) -> StyledValue<Self, NoColor, Magenta>
where Self: Sized,

Changes the background to magenta
source§

fn into_on_cyan(self) -> StyledValue<Self, NoColor, Cyan>
where Self: Sized,

Changes the background to cyan
source§

fn into_on_white(self) -> StyledValue<Self, NoColor, White>
where Self: Sized,

Changes the background to white
source§

fn into_on_bright_black(self) -> StyledValue<Self, NoColor, BrightBlack>
where Self: Sized,

Changes the background to bright black
source§

fn into_on_bright_red(self) -> StyledValue<Self, NoColor, BrightRed>
where Self: Sized,

Changes the background to bright red
source§

fn into_on_bright_green(self) -> StyledValue<Self, NoColor, BrightGreen>
where Self: Sized,

Changes the background to bright green
source§

fn into_on_bright_yellow(self) -> StyledValue<Self, NoColor, BrightYellow>
where Self: Sized,

Changes the background to bright yellow
source§

fn into_on_bright_blue(self) -> StyledValue<Self, NoColor, BrightBlue>
where Self: Sized,

Changes the background to bright blue
source§

fn into_on_bright_magenta(self) -> StyledValue<Self, NoColor, BrightMagenta>
where Self: Sized,

Changes the background to bright magenta
source§

fn into_on_bright_cyan(self) -> StyledValue<Self, NoColor, BrightCyan>
where Self: Sized,

Changes the background to bright cyan
source§

fn into_on_bright_white(self) -> StyledValue<Self, NoColor, BrightWhite>
where Self: Sized,

Changes the background to bright white
source§

fn bold(&self) -> StyledValue<&Self>

Applies the bold effect
source§

fn dimmed(&self) -> StyledValue<&Self>

Applies the dimmed effect
source§

fn italics(&self) -> StyledValue<&Self>

Applies the italics effect
source§

fn underline(&self) -> StyledValue<&Self>

Applies the underline effect
source§

fn double_underline(&self) -> StyledValue<&Self>

Applies the double underline effect
Applies the blink effect
Applies the blink fast effect
source§

fn reverse(&self) -> StyledValue<&Self>

Applies the reverse effect
source§

fn hide(&self) -> StyledValue<&Self>

Applies the hide effect
source§

fn strikethrough(&self) -> StyledValue<&Self>

Applies the strikethrough effect
source§

fn overline(&self) -> StyledValue<&Self>

Applies the overline effect
source§

fn superscript(&self) -> StyledValue<&Self>

Applies the superscript effect
source§

fn subscript(&self) -> StyledValue<&Self>

Applies the subscript effect
source§

fn into_bold(self) -> StyledValue<Self>
where Self: Sized,

Applies the bold effect
source§

fn into_dimmed(self) -> StyledValue<Self>
where Self: Sized,

Applies the dimmed effect
source§

fn into_italics(self) -> StyledValue<Self>
where Self: Sized,

Applies the italics effect
source§

fn into_underline(self) -> StyledValue<Self>
where Self: Sized,

Applies the underline effect
source§

fn into_double_underline(self) -> StyledValue<Self>
where Self: Sized,

Applies the double underline effect
Applies the blink effect
Applies the blink fast effect
source§

fn into_reverse(self) -> StyledValue<Self>
where Self: Sized,

Applies the reverse effect
source§

fn into_hide(self) -> StyledValue<Self>
where Self: Sized,

Applies the hide effect
source§

fn into_strikethrough(self) -> StyledValue<Self>
where Self: Sized,

Applies the strikethrough effect
source§

fn into_overline(self) -> StyledValue<Self>
where Self: Sized,

Applies the overline effect
source§

fn into_superscript(self) -> StyledValue<Self>
where Self: Sized,

Applies the superscript effect
source§

fn into_subscript(self) -> StyledValue<Self>
where Self: Sized,

Applies the subscript effect
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> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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.