Pdpte1G

Struct Pdpte1G 

Source
#[repr(transparent)]
pub struct Pdpte1G(u64);
Expand description

L3 PDPTE (1 GiB leaf) — maps a single 1 GiB page (PS = 1).

  • PAT (Page Attribute Table) selector lives at bit 12 in this form.
  • Physical address uses bits 51:30 and must be 1 GiB aligned.
  • Dirty is set by CPU on first write; Global keeps TLB entries across CR3 reload unless explicitly invalidated.

This is a terminal mapping (leaf).

Tuple Fields§

§0: u64

Implementations§

Source§

impl Pdpte1G

Source

const PRESENT_BITS: usize = 1usize

Source

const PRESENT_OFFSET: usize = 0usize

Source

const WRITABLE_BITS: usize = 1usize

Source

const WRITABLE_OFFSET: usize = 1usize

Source

const USER_BITS: usize = 1usize

Source

const USER_OFFSET: usize = 2usize

Source

const WRITE_THROUGH_BITS: usize = 1usize

Source

const WRITE_THROUGH_OFFSET: usize = 3usize

Source

const CACHE_DISABLE_BITS: usize = 1usize

Source

const CACHE_DISABLE_OFFSET: usize = 4usize

Source

const ACCESSED_BITS: usize = 1usize

Source

const ACCESSED_OFFSET: usize = 5usize

Source

const DIRTY_BITS: usize = 1usize

Source

const DIRTY_OFFSET: usize = 6usize

Source

const PAGE_SIZE_BITS: usize = 1usize

Source

const PAGE_SIZE_OFFSET: usize = 7usize

Source

const GLOBAL_BITS: usize = 1usize

Source

const GLOBAL_OFFSET: usize = 8usize

Source

const OS_AVAILABLE_LOW_BITS: usize = 3usize

Source

const OS_AVAILABLE_LOW_OFFSET: usize = 9usize

Source

const PAT_LARGE_BITS: usize = 1usize

Source

const PAT_LARGE_OFFSET: usize = 12usize

Source

const PHYS_ADDR_51_30_BITS: usize = 22usize

Source

const PHYS_ADDR_51_30_OFFSET: usize = 30usize

Source

const OS_AVAILABLE_HIGH_BITS: usize = 7usize

Source

const OS_AVAILABLE_HIGH_OFFSET: usize = 52usize

Source

const PROTECTION_KEY_BITS: usize = 4usize

Source

const PROTECTION_KEY_OFFSET: usize = 59usize

Source

const NO_EXECUTE_BITS: usize = 1usize

Source

const NO_EXECUTE_OFFSET: usize = 63usize

Source

pub const fn new() -> Self

Creates a new default initialized bitfield.

Source

pub const fn from_bits(bits: u64) -> Self

Convert from bits.

Source

pub const fn into_bits(self) -> u64

Convert into bits.

Source

pub const fn present(&self) -> bool

Present (bit 0).

Bits: 0..1

Source

pub const fn with_present_checked(self, value: bool) -> Result<Self, ()>

Present (bit 0).

Bits: 0..1

Source

pub const fn with_present(self, value: bool) -> Self

Present (bit 0).

Bits: 0..1

Source

pub const fn set_present(&mut self, value: bool)

Present (bit 0).

Bits: 0..1

Source

pub const fn set_present_checked(&mut self, value: bool) -> Result<(), ()>

Present (bit 0).

Bits: 0..1

Source

pub const fn writable(&self) -> bool

Writable (bit 1).

Bits: 1..2

Source

pub const fn with_writable_checked(self, value: bool) -> Result<Self, ()>

Writable (bit 1).

Bits: 1..2

Source

pub const fn with_writable(self, value: bool) -> Self

Writable (bit 1).

Bits: 1..2

Source

pub const fn set_writable(&mut self, value: bool)

Writable (bit 1).

Bits: 1..2

Source

pub const fn set_writable_checked(&mut self, value: bool) -> Result<(), ()>

Writable (bit 1).

Bits: 1..2

Source

pub const fn user(&self) -> bool

User (bit 2).

Bits: 2..3

Source

pub const fn with_user_checked(self, value: bool) -> Result<Self, ()>

User (bit 2).

Bits: 2..3

Source

pub const fn with_user(self, value: bool) -> Self

User (bit 2).

Bits: 2..3

Source

pub const fn set_user(&mut self, value: bool)

User (bit 2).

Bits: 2..3

Source

pub const fn set_user_checked(&mut self, value: bool) -> Result<(), ()>

User (bit 2).

Bits: 2..3

Source

pub const fn write_through(&self) -> bool

Write-Through (bit 3).

Bits: 3..4

Source

pub const fn with_write_through_checked(self, value: bool) -> Result<Self, ()>

Write-Through (bit 3).

Bits: 3..4

Source

pub const fn with_write_through(self, value: bool) -> Self

Write-Through (bit 3).

Bits: 3..4

Source

pub const fn set_write_through(&mut self, value: bool)

Write-Through (bit 3).

Bits: 3..4

Source

pub const fn set_write_through_checked(&mut self, value: bool) -> Result<(), ()>

Write-Through (bit 3).

Bits: 3..4

Source

pub const fn cache_disable(&self) -> bool

Cache Disable (bit 4).

Bits: 4..5

Source

pub const fn with_cache_disable_checked(self, value: bool) -> Result<Self, ()>

Cache Disable (bit 4).

Bits: 4..5

Source

pub const fn with_cache_disable(self, value: bool) -> Self

Cache Disable (bit 4).

Bits: 4..5

Source

pub const fn set_cache_disable(&mut self, value: bool)

Cache Disable (bit 4).

Bits: 4..5

Source

pub const fn set_cache_disable_checked(&mut self, value: bool) -> Result<(), ()>

Cache Disable (bit 4).

Bits: 4..5

Source

pub const fn accessed(&self) -> bool

Accessed (bit 5).

Bits: 5..6

Source

pub const fn with_accessed_checked(self, value: bool) -> Result<Self, ()>

Accessed (bit 5).

Bits: 5..6

Source

pub const fn with_accessed(self, value: bool) -> Self

Accessed (bit 5).

Bits: 5..6

Source

pub const fn set_accessed(&mut self, value: bool)

Accessed (bit 5).

Bits: 5..6

Source

pub const fn set_accessed_checked(&mut self, value: bool) -> Result<(), ()>

Accessed (bit 5).

Bits: 5..6

Source

pub const fn dirty(&self) -> bool

Dirty (bit 6): set by CPU on first write to this 1 GiB page.

Bits: 6..7

Source

pub const fn with_dirty_checked(self, value: bool) -> Result<Self, ()>

Dirty (bit 6): set by CPU on first write to this 1 GiB page.

Bits: 6..7

Source

pub const fn with_dirty(self, value: bool) -> Self

Dirty (bit 6): set by CPU on first write to this 1 GiB page.

Bits: 6..7

Source

pub const fn set_dirty(&mut self, value: bool)

Dirty (bit 6): set by CPU on first write to this 1 GiB page.

Bits: 6..7

Source

pub const fn set_dirty_checked(&mut self, value: bool) -> Result<(), ()>

Dirty (bit 6): set by CPU on first write to this 1 GiB page.

Bits: 6..7

Source

const fn page_size(&self) -> bool

Page Size (bit 7): must be 1 for 1 GiB leaf.

Bits: 7..8

Source

const fn with_page_size_checked(self, value: bool) -> Result<Self, ()>

Page Size (bit 7): must be 1 for 1 GiB leaf.

Bits: 7..8

Source

const fn with_page_size(self, value: bool) -> Self

Page Size (bit 7): must be 1 for 1 GiB leaf.

Bits: 7..8

Source

const fn set_page_size(&mut self, value: bool)

Page Size (bit 7): must be 1 for 1 GiB leaf.

Bits: 7..8

Source

const fn set_page_size_checked(&mut self, value: bool) -> Result<(), ()>

Page Size (bit 7): must be 1 for 1 GiB leaf.

Bits: 7..8

Source

pub const fn global(&self) -> bool

Global (bit 8): TLB entry not flushed on CR3 reload.

Bits: 8..9

Source

pub const fn with_global_checked(self, value: bool) -> Result<Self, ()>

Global (bit 8): TLB entry not flushed on CR3 reload.

Bits: 8..9

Source

pub const fn with_global(self, value: bool) -> Self

Global (bit 8): TLB entry not flushed on CR3 reload.

Bits: 8..9

Source

pub const fn set_global(&mut self, value: bool)

Global (bit 8): TLB entry not flushed on CR3 reload.

Bits: 8..9

Source

pub const fn set_global_checked(&mut self, value: bool) -> Result<(), ()>

Global (bit 8): TLB entry not flushed on CR3 reload.

Bits: 8..9

Source

pub const fn os_available_low(&self) -> u8

OS-available low (bits 9..11).

Bits: 9..12

Source

pub const fn with_os_available_low_checked(self, value: u8) -> Result<Self, ()>

OS-available low (bits 9..11).

Bits: 9..12

Source

pub const fn with_os_available_low(self, value: u8) -> Self

OS-available low (bits 9..11).

Bits: 9..12

Source

pub const fn set_os_available_low(&mut self, value: u8)

OS-available low (bits 9..11).

Bits: 9..12

Source

pub const fn set_os_available_low_checked( &mut self, value: u8, ) -> Result<(), ()>

OS-available low (bits 9..11).

Bits: 9..12

Source

pub const fn pat_large(&self) -> bool

PAT (Page Attribute Table) selector for 1 GiB mappings (bit 12).

Bits: 12..13

Source

pub const fn with_pat_large_checked(self, value: bool) -> Result<Self, ()>

PAT (Page Attribute Table) selector for 1 GiB mappings (bit 12).

Bits: 12..13

Source

pub const fn with_pat_large(self, value: bool) -> Self

PAT (Page Attribute Table) selector for 1 GiB mappings (bit 12).

Bits: 12..13

Source

pub const fn set_pat_large(&mut self, value: bool)

PAT (Page Attribute Table) selector for 1 GiB mappings (bit 12).

Bits: 12..13

Source

pub const fn set_pat_large_checked(&mut self, value: bool) -> Result<(), ()>

PAT (Page Attribute Table) selector for 1 GiB mappings (bit 12).

Bits: 12..13

Source

const fn phys_addr_51_30(&self) -> u32

Physical address bits 51:30 (1 GiB-aligned base).

Bits: 30..52

Source

const fn with_phys_addr_51_30_checked(self, value: u32) -> Result<Self, ()>

Physical address bits 51:30 (1 GiB-aligned base).

Bits: 30..52

Source

const fn with_phys_addr_51_30(self, value: u32) -> Self

Physical address bits 51:30 (1 GiB-aligned base).

Bits: 30..52

Source

const fn set_phys_addr_51_30(&mut self, value: u32)

Physical address bits 51:30 (1 GiB-aligned base).

Bits: 30..52

Source

const fn set_phys_addr_51_30_checked(&mut self, value: u32) -> Result<(), ()>

Physical address bits 51:30 (1 GiB-aligned base).

Bits: 30..52

Source

pub const fn os_available_high(&self) -> u8

OS-available high (bits 52..58).

Bits: 52..59

Source

pub const fn with_os_available_high_checked(self, value: u8) -> Result<Self, ()>

OS-available high (bits 52..58).

Bits: 52..59

Source

pub const fn with_os_available_high(self, value: u8) -> Self

OS-available high (bits 52..58).

Bits: 52..59

Source

pub const fn set_os_available_high(&mut self, value: u8)

OS-available high (bits 52..58).

Bits: 52..59

Source

pub const fn set_os_available_high_checked( &mut self, value: u8, ) -> Result<(), ()>

OS-available high (bits 52..58).

Bits: 52..59

Source

pub const fn protection_key(&self) -> u8

Protection Key / OS use (59..62).

Bits: 59..63

Source

pub const fn with_protection_key_checked(self, value: u8) -> Result<Self, ()>

Protection Key / OS use (59..62).

Bits: 59..63

Source

pub const fn with_protection_key(self, value: u8) -> Self

Protection Key / OS use (59..62).

Bits: 59..63

Source

pub const fn set_protection_key(&mut self, value: u8)

Protection Key / OS use (59..62).

Bits: 59..63

Source

pub const fn set_protection_key_checked(&mut self, value: u8) -> Result<(), ()>

Protection Key / OS use (59..62).

Bits: 59..63

Source

pub const fn no_execute(&self) -> bool

No-Execute (bit 63).

Bits: 63..64

Source

pub const fn with_no_execute_checked(self, value: bool) -> Result<Self, ()>

No-Execute (bit 63).

Bits: 63..64

Source

pub const fn with_no_execute(self, value: bool) -> Self

No-Execute (bit 63).

Bits: 63..64

Source

pub const fn set_no_execute(&mut self, value: bool)

No-Execute (bit 63).

Bits: 63..64

Source

pub const fn set_no_execute_checked(&mut self, value: bool) -> Result<(), ()>

No-Execute (bit 63).

Bits: 63..64

Source§

impl Pdpte1G

Source

pub const fn with_physical_page(self, phys: PhysicalPage<Size1G>) -> Self

Set the 1 GiB page base (must be 1 GiB-aligned).

Source

pub const fn set_physical_page(&mut self, phys: PhysicalPage<Size1G>)

Set the 1 GiB page base (must be 1 GiB-aligned).

Source

pub const fn physical_page(self) -> PhysicalPage<Size1G>

Get the 1 GiB page base.

Source

pub const fn new_common_rw() -> Self

Leaf PDPTE with common kernel RW flags.

Trait Implementations§

Source§

impl Clone for Pdpte1G

Source§

fn clone(&self) -> Pdpte1G

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Pdpte1G

Source§

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

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

impl Default for Pdpte1G

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl From<Pdpte1G> for PdptEntry

Source§

fn from(e: Pdpte1G) -> Self

Converts to this type from the input type.
Source§

impl From<Pdpte1G> for VirtualMemoryPageBits

Source§

fn from(e: Pdpte1G) -> Self

Converts to this type from the input type.
Source§

impl From<Pdpte1G> for u64

Source§

fn from(v: Pdpte1G) -> u64

Converts to this type from the input type.
Source§

impl From<u64> for Pdpte1G

Source§

fn from(v: u64) -> Self

Converts to this type from the input type.
Source§

impl Copy for Pdpte1G

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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.