Struct hal_x86_64::interrupt::PageFaultCode
source · pub struct PageFaultCode(/* private fields */);
Implementations§
source§impl PageFaultCode
impl PageFaultCode
sourcepub const PRESENT: Pack32<bool, Self> = _
pub const PRESENT: Pack32<bool, Self> = _
When set, the page fault was caused by a page-protection violation. When not set, it was caused by a non-present page.
sourcepub const WRITE: Pack32<bool, Self> = _
pub const WRITE: Pack32<bool, Self> = _
When set, the page fault was caused by a write access. When not set, it was caused by a read access.
sourcepub const USER: Pack32<bool, Self> = _
pub const USER: Pack32<bool, Self> = _
When set, the page fault was caused while CPL = 3. This does not necessarily mean that the page fault was a privilege violation.
sourcepub const RESERVED_WRITE: Pack32<bool, Self> = _
pub const RESERVED_WRITE: Pack32<bool, Self> = _
When set, one or more page directory entries contain reserved bits which are set to 1. This only applies when the PSE or PAE flags in CR4 are set to 1.
sourcepub const INSTRUCTION_FETCH: Pack32<bool, Self> = _
pub const INSTRUCTION_FETCH: Pack32<bool, Self> = _
When set, the page fault was caused by an instruction fetch. This only applies when the No-Execute bit is supported and enabled.
sourcepub const PROTECTION_KEY: Pack32<bool, Self> = _
pub const PROTECTION_KEY: Pack32<bool, Self> = _
When set, the page fault was caused by a protection-key violation. The PKRU register (for user-mode accesses) or PKRS MSR (for supervisor-mode accesses) specifies the protection key rights.
sourcepub const SHADOW_STACK: Pack32<bool, Self> = _
pub const SHADOW_STACK: Pack32<bool, Self> = _
When set, the page fault was caused by a shadow stack access.
sourcepub const SGX: Pack32<bool, Self> = _
pub const SGX: Pack32<bool, Self> = _
When set, the fault was due to an SGX violation. The fault is unrelated to ordinary paging.
sourcepub const fn from_bits(bits: u32) -> Self
pub const fn from_bits(bits: u32) -> Self
Constructs a new instance of Self
from the provided raw bits.
sourcepub fn with<T>(self, field: Pack32<T, Self>, value: T) -> Selfwhere
T: FromBits<u32>,
pub fn with<T>(self, field: Pack32<T, Self>, value: T) -> Selfwhere
T: FromBits<u32>,
Packs the bit representation of value
into self
at the bit
range designated by field
, returning a new bitfield.
sourcepub fn set<T>(&mut self, field: Pack32<T, Self>, value: T) -> &mut Selfwhere
T: FromBits<u32>,
pub fn set<T>(&mut self, field: Pack32<T, Self>, value: T) -> &mut Selfwhere
T: FromBits<u32>,
Packs the bit representation of value
into self
at the range
designated by field
, mutating self
in place.
sourcepub fn get<T>(self, field: Pack32<T, Self>) -> Twhere
T: FromBits<u32>,
pub fn get<T>(self, field: Pack32<T, Self>) -> Twhere
T: FromBits<u32>,
Unpacks the bit range represented by field
from self
, and
converts it into a T
-typed value.
Panics
This method panics if self
does not contain a valid bit
pattern for a T
-typed value, as determined by T
’s
FromBits::try_from_bits
implementation.
sourcepub fn try_get<T>(self, field: Pack32<T, Self>) -> Result<T, T::Error>where
T: FromBits<u32>,
pub fn try_get<T>(self, field: Pack32<T, Self>) -> Result<T, T::Error>where
T: FromBits<u32>,
Unpacks the bit range represented by field
from self
and attempts to convert it into a T
-typed value.
Returns
Ok(T)
if aT
-typed value could be constructed from the bits insrc
Err(T::Error)
ifsrc
does not contain a valid bit pattern for aT
-typed value, as determined byT
’s [FromBits::try_from_bits
implementation.
sourcepub fn assert_valid()
pub fn assert_valid()
Asserts that all the packing specs for this type are valid.
This is intended to be used in unit tests.
sourcepub fn display_ascii(&self) -> impl Display
pub fn display_ascii(&self) -> impl Display
Returns a value that formats this bitfield in a multi-line format, using only ASCII characters.
This is equivalent to formatting this bitfield using a {}
display specifier, but will never use Unicode box-drawing
characters, even when an upstream formatter uses the {:#}
fmt::Display
specifier. This is intended for use on platforms
where Unicode box drawing characters are never available.
sourcepub fn display_unicode(&self) -> impl Display
pub fn display_unicode(&self) -> impl Display
Returns a value that formats this bitfield in a multi-line format, always using Unicode box-drawing characters.
This is equivalent to formatting this bitfield using a {:#}
format specifier, but will always use Unicode box-drawing
characters, even when an upstream formatter uses the {}
fmt::Display
specifier.
Trait Implementations§
source§impl Binary for PageFaultCode
impl Binary for PageFaultCode
source§impl Clone for PageFaultCode
impl Clone for PageFaultCode
source§fn clone(&self) -> PageFaultCode
fn clone(&self) -> PageFaultCode
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more