#[repr(transparent)]pub struct Pde(u64);Expand description
L2 PDE — pointer to a Page Table (non-leaf; PS = 0).
- Physical address (bits 51:12) is a 4 KiB-aligned PT.
 - In non-leaf PDEs, PAT lives at bit 12 only in the leaf form; here, all bits 12..51 are the next-level table address.
 
Tuple Fields§
§0: u64Implementations§
Source§impl Pde
 
impl Pde
const PRESENT_BITS: usize = 1usize
const PRESENT_OFFSET: usize = 0usize
const WRITABLE_BITS: usize = 1usize
const WRITABLE_OFFSET: usize = 1usize
const USER_BITS: usize = 1usize
const USER_OFFSET: usize = 2usize
const WRITE_THROUGH_BITS: usize = 1usize
const WRITE_THROUGH_OFFSET: usize = 3usize
const CACHE_DISABLE_BITS: usize = 1usize
const CACHE_DISABLE_OFFSET: usize = 4usize
const ACCESSED_BITS: usize = 1usize
const ACCESSED_OFFSET: usize = 5usize
const OS_AVAILABLE_LOW_BITS: usize = 3usize
const OS_AVAILABLE_LOW_OFFSET: usize = 9usize
const PHYS_ADDR_51_12_BITS: usize = 40usize
const PHYS_ADDR_51_12_OFFSET: usize = 12usize
const OS_AVAILABLE_HIGH_BITS: usize = 7usize
const OS_AVAILABLE_HIGH_OFFSET: usize = 52usize
const PROTECTION_KEY_BITS: usize = 4usize
const PROTECTION_KEY_OFFSET: usize = 59usize
const NO_EXECUTE_BITS: usize = 1usize
const NO_EXECUTE_OFFSET: usize = 63usize
Sourcepub const fn with_present_checked(self, value: bool) -> Result<Self, ()>
 
pub const fn with_present_checked(self, value: bool) -> Result<Self, ()>
Present (bit 0).
Bits: 0..1
Sourcepub const fn with_present(self, value: bool) -> Self
 
pub const fn with_present(self, value: bool) -> Self
Present (bit 0).
Bits: 0..1
Sourcepub const fn set_present(&mut self, value: bool)
 
pub const fn set_present(&mut self, value: bool)
Present (bit 0).
Bits: 0..1
Sourcepub const fn set_present_checked(&mut self, value: bool) -> Result<(), ()>
 
pub const fn set_present_checked(&mut self, value: bool) -> Result<(), ()>
Present (bit 0).
Bits: 0..1
Sourcepub const fn with_writable_checked(self, value: bool) -> Result<Self, ()>
 
pub const fn with_writable_checked(self, value: bool) -> Result<Self, ()>
Writable (bit 1).
Bits: 1..2
Sourcepub const fn with_writable(self, value: bool) -> Self
 
pub const fn with_writable(self, value: bool) -> Self
Writable (bit 1).
Bits: 1..2
Sourcepub const fn set_writable(&mut self, value: bool)
 
pub const fn set_writable(&mut self, value: bool)
Writable (bit 1).
Bits: 1..2
Sourcepub const fn set_writable_checked(&mut self, value: bool) -> Result<(), ()>
 
pub const fn set_writable_checked(&mut self, value: bool) -> Result<(), ()>
Writable (bit 1).
Bits: 1..2
Sourcepub const fn with_user_checked(self, value: bool) -> Result<Self, ()>
 
pub const fn with_user_checked(self, value: bool) -> Result<Self, ()>
User (bit 2).
Bits: 2..3
Sourcepub const fn set_user_checked(&mut self, value: bool) -> Result<(), ()>
 
pub const fn set_user_checked(&mut self, value: bool) -> Result<(), ()>
User (bit 2).
Bits: 2..3
Sourcepub const fn write_through(&self) -> bool
 
pub const fn write_through(&self) -> bool
Write-Through (bit 3).
Bits: 3..4
Sourcepub const fn with_write_through_checked(self, value: bool) -> Result<Self, ()>
 
pub const fn with_write_through_checked(self, value: bool) -> Result<Self, ()>
Write-Through (bit 3).
Bits: 3..4
Sourcepub const fn with_write_through(self, value: bool) -> Self
 
pub const fn with_write_through(self, value: bool) -> Self
Write-Through (bit 3).
Bits: 3..4
Sourcepub const fn set_write_through(&mut self, value: bool)
 
pub const fn set_write_through(&mut self, value: bool)
Write-Through (bit 3).
Bits: 3..4
Sourcepub const fn set_write_through_checked(&mut self, value: bool) -> Result<(), ()>
 
pub const fn set_write_through_checked(&mut self, value: bool) -> Result<(), ()>
Write-Through (bit 3).
Bits: 3..4
Sourcepub const fn cache_disable(&self) -> bool
 
pub const fn cache_disable(&self) -> bool
Cache Disable (bit 4).
Bits: 4..5
Sourcepub const fn with_cache_disable_checked(self, value: bool) -> Result<Self, ()>
 
pub const fn with_cache_disable_checked(self, value: bool) -> Result<Self, ()>
Cache Disable (bit 4).
Bits: 4..5
Sourcepub const fn with_cache_disable(self, value: bool) -> Self
 
pub const fn with_cache_disable(self, value: bool) -> Self
Cache Disable (bit 4).
Bits: 4..5
Sourcepub const fn set_cache_disable(&mut self, value: bool)
 
pub const fn set_cache_disable(&mut self, value: bool)
Cache Disable (bit 4).
Bits: 4..5
Sourcepub const fn set_cache_disable_checked(&mut self, value: bool) -> Result<(), ()>
 
pub const fn set_cache_disable_checked(&mut self, value: bool) -> Result<(), ()>
Cache Disable (bit 4).
Bits: 4..5
Sourcepub const fn with_accessed_checked(self, value: bool) -> Result<Self, ()>
 
pub const fn with_accessed_checked(self, value: bool) -> Result<Self, ()>
Accessed (bit 5).
Bits: 5..6
Sourcepub const fn with_accessed(self, value: bool) -> Self
 
pub const fn with_accessed(self, value: bool) -> Self
Accessed (bit 5).
Bits: 5..6
Sourcepub const fn set_accessed(&mut self, value: bool)
 
pub const fn set_accessed(&mut self, value: bool)
Accessed (bit 5).
Bits: 5..6
Sourcepub const fn set_accessed_checked(&mut self, value: bool) -> Result<(), ()>
 
pub const fn set_accessed_checked(&mut self, value: bool) -> Result<(), ()>
Accessed (bit 5).
Bits: 5..6
Sourcepub const fn os_available_low(&self) -> u8
 
pub const fn os_available_low(&self) -> u8
OS-available low (bits 9..11).
Bits: 9..12
Sourcepub const fn with_os_available_low_checked(self, value: u8) -> Result<Self, ()>
 
pub const fn with_os_available_low_checked(self, value: u8) -> Result<Self, ()>
OS-available low (bits 9..11).
Bits: 9..12
Sourcepub const fn with_os_available_low(self, value: u8) -> Self
 
pub const fn with_os_available_low(self, value: u8) -> Self
OS-available low (bits 9..11).
Bits: 9..12
Sourcepub const fn set_os_available_low(&mut self, value: u8)
 
pub const fn set_os_available_low(&mut self, value: u8)
OS-available low (bits 9..11).
Bits: 9..12
Sourcepub const fn set_os_available_low_checked(
    &mut self,
    value: u8,
) -> Result<(), ()>
 
pub const fn set_os_available_low_checked( &mut self, value: u8, ) -> Result<(), ()>
OS-available low (bits 9..11).
Bits: 9..12
Sourceconst fn phys_addr_51_12(&self) -> u64
 
const fn phys_addr_51_12(&self) -> u64
Next-level table physical address (bits 12..51, 4 KiB-aligned).
Note: Do not insert reserved placeholders here; in non-leaf form these bits are entirely the PT base address.
Bits: 12..52
Sourceconst fn with_phys_addr_51_12_checked(self, value: u64) -> Result<Self, ()>
 
const fn with_phys_addr_51_12_checked(self, value: u64) -> Result<Self, ()>
Next-level table physical address (bits 12..51, 4 KiB-aligned).
Note: Do not insert reserved placeholders here; in non-leaf form these bits are entirely the PT base address.
Bits: 12..52
Sourceconst fn with_phys_addr_51_12(self, value: u64) -> Self
 
const fn with_phys_addr_51_12(self, value: u64) -> Self
Next-level table physical address (bits 12..51, 4 KiB-aligned).
Note: Do not insert reserved placeholders here; in non-leaf form these bits are entirely the PT base address.
Bits: 12..52
Sourceconst fn set_phys_addr_51_12(&mut self, value: u64)
 
const fn set_phys_addr_51_12(&mut self, value: u64)
Next-level table physical address (bits 12..51, 4 KiB-aligned).
Note: Do not insert reserved placeholders here; in non-leaf form these bits are entirely the PT base address.
Bits: 12..52
Sourceconst fn set_phys_addr_51_12_checked(&mut self, value: u64) -> Result<(), ()>
 
const fn set_phys_addr_51_12_checked(&mut self, value: u64) -> Result<(), ()>
Next-level table physical address (bits 12..51, 4 KiB-aligned).
Note: Do not insert reserved placeholders here; in non-leaf form these bits are entirely the PT base address.
Bits: 12..52
Sourcepub const fn os_available_high(&self) -> u8
 
pub const fn os_available_high(&self) -> u8
OS-available high (bits 52..58).
Bits: 52..59
Sourcepub const fn with_os_available_high_checked(self, value: u8) -> Result<Self, ()>
 
pub const fn with_os_available_high_checked(self, value: u8) -> Result<Self, ()>
OS-available high (bits 52..58).
Bits: 52..59
Sourcepub const fn with_os_available_high(self, value: u8) -> Self
 
pub const fn with_os_available_high(self, value: u8) -> Self
OS-available high (bits 52..58).
Bits: 52..59
Sourcepub const fn set_os_available_high(&mut self, value: u8)
 
pub const fn set_os_available_high(&mut self, value: u8)
OS-available high (bits 52..58).
Bits: 52..59
Sourcepub const fn set_os_available_high_checked(
    &mut self,
    value: u8,
) -> Result<(), ()>
 
pub const fn set_os_available_high_checked( &mut self, value: u8, ) -> Result<(), ()>
OS-available high (bits 52..58).
Bits: 52..59
Sourcepub const fn protection_key(&self) -> u8
 
pub const fn protection_key(&self) -> u8
Protection Key / OS use (59..62).
Bits: 59..63
Sourcepub const fn with_protection_key_checked(self, value: u8) -> Result<Self, ()>
 
pub const fn with_protection_key_checked(self, value: u8) -> Result<Self, ()>
Protection Key / OS use (59..62).
Bits: 59..63
Sourcepub const fn with_protection_key(self, value: u8) -> Self
 
pub const fn with_protection_key(self, value: u8) -> Self
Protection Key / OS use (59..62).
Bits: 59..63
Sourcepub const fn set_protection_key(&mut self, value: u8)
 
pub const fn set_protection_key(&mut self, value: u8)
Protection Key / OS use (59..62).
Bits: 59..63
Sourcepub const fn set_protection_key_checked(&mut self, value: u8) -> Result<(), ()>
 
pub const fn set_protection_key_checked(&mut self, value: u8) -> Result<(), ()>
Protection Key / OS use (59..62).
Bits: 59..63
Sourcepub const fn no_execute(&self) -> bool
 
pub const fn no_execute(&self) -> bool
No-Execute (bit 63).
Bits: 63..64
Sourcepub const fn with_no_execute_checked(self, value: bool) -> Result<Self, ()>
 
pub const fn with_no_execute_checked(self, value: bool) -> Result<Self, ()>
No-Execute (bit 63).
Bits: 63..64
Sourcepub const fn with_no_execute(self, value: bool) -> Self
 
pub const fn with_no_execute(self, value: bool) -> Self
No-Execute (bit 63).
Bits: 63..64
Sourcepub const fn set_no_execute(&mut self, value: bool)
 
pub const fn set_no_execute(&mut self, value: bool)
No-Execute (bit 63).
Bits: 63..64
Source§impl Pde
 
impl Pde
Sourcepub const fn with_physical_page(self, phys: PhysicalPage<Size4K>) -> Self
 
pub const fn with_physical_page(self, phys: PhysicalPage<Size4K>) -> Self
Set the Page Table base (4 KiB-aligned).
Sourcepub const fn set_physical_page(&mut self, phys: PhysicalPage<Size4K>)
 
pub const fn set_physical_page(&mut self, phys: PhysicalPage<Size4K>)
Set the Page Table base (4 KiB-aligned).
Sourcepub const fn physical_address(self) -> PhysicalPage<Size4K>
 
pub const fn physical_address(self) -> PhysicalPage<Size4K>
Get the Page Table base.
Sourcepub const fn new_common_rw() -> Self
 
pub const fn new_common_rw() -> Self
Non-leaf PDE with common kernel RW flags.