mycelium_kernel::arch::interrupt::apic::local

Struct ErrorStatus

Source
pub struct ErrorStatus(/* private fields */);
Expand description

Value of the Error Status Register (ESR).

See Intel SDM Vol. 3A, Ch. 7, Section 12.5.3, “Error Handling”.

Implementations§

Source§

impl ErrorStatus

Source

pub const SEND_CHECKSUM_ERROR: Pack32<bool, ErrorStatus>

Set when the local APIC detects a checksum error for a message that it sent on the APIC bus.

Used only on P6 family and Pentium processors.

Source

pub const RECV_CHECKSUM_ERROR: Pack32<bool, ErrorStatus>

Set when the local APIC detects a checksum error for a message that it received on the APIC bus.

Used only on P6 family and Pentium processors.

Source

pub const SEND_ACCEPT_ERROR: Pack32<bool, ErrorStatus>

Set when the local APIC detects that a message it sent was not accepted by any APIC on the APIC bus

Used only on P6 family and Pentium processors.

Source

pub const RECV_ACCEPT_ERROR: Pack32<bool, ErrorStatus>

Set when the local APIC detects that a message it received was not accepted by any APIC on the APIC bus.

Used only on P6 family and Pentium processors.

Source

pub const REDIRECTABLE_IPI: Pack32<bool, ErrorStatus>

Set when the local APIC detects an attempt to send an IPI with the lowest-priority delivery mode and the local APIC does not support the sending of such IPIs. This bit is used on some Intel Core and Intel Xeon processors.

Source

pub const SEND_ILLEGAL_VECTOR: Pack32<bool, ErrorStatus>

Set when the local APIC detects an illegal vector (one in the range 0 to 15) in the message that it is sending. This occurs as the result of a write to the ICR (in both xAPIC and x2APIC modes) or to SELF IPI register (x2APIC mode only) with an illegal vector.

If the local APIC does not support the sending of lowest-priority IPIs and software writes the ICR to send a lowest-priority IPI with an illegal vector, the local APIC sets only the “redirectable IPI” error bit. The interrupt is not processed and hence the “Send Illegal Vector” bit is not set in the ESR.

Source

pub const RECV_ILLEGAL_VECTOR: Pack32<bool, ErrorStatus>

Set when the local APIC detects an illegal vector (one in the range 0 to 15) in an interrupt message it receives or in an interrupt generated locally from the local vector table or via a self IPI. Such interrupts are not delivered to the processor; the local APIC will never set an IRR bit in the range 0 to 15.

Source

pub const ILLEGAL_REGISTER_ACCESS: Pack32<bool, ErrorStatus>

Set when the local APIC is in xAPIC mode and software attempts to access a register that is reserved in the processor’s local-APIC register-address space; see Table 10-1. (The local-APIC register-address spacemprises the 4 KBytes at the physical address specified in the IA32_APIC_BASE MSR.) Used only on Intel Core, Intel Atom, Pentium 4, Intel Xeon, and P6 family processors.

In x2APIC mode, software accesses the APIC registers using the RDMSR and WRMSR instructions. Use of one of these instructions to access a reserved register cause a general-protection exception (see Section 10.12.1.3). They do not set the “Illegal Register Access” bit in the ESR.

Source

pub const fn from_bits(bits: u32) -> ErrorStatus

Constructs a new instance of Self from the provided raw bits.

Source

pub const fn new() -> ErrorStatus

Constructs a new instance of Self with all bits set to 0.

Source

pub const fn bits(self) -> u32

Returns the raw bit representatiion of self as an integer.

Source

pub fn with<T>(self, field: Pack32<T, ErrorStatus>, value: T) -> ErrorStatus
where T: FromBits<u32>,

Packs the bit representation of value into self at the bit range designated by field, returning a new bitfield.

Source

pub fn set<T>( &mut self, field: Pack32<T, ErrorStatus>, value: T, ) -> &mut ErrorStatus
where T: FromBits<u32>,

Packs the bit representation of value into self at the range designated by field, mutating self in place.

Source

pub fn get<T>(self, field: Pack32<T, ErrorStatus>) -> T
where 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.

Source

pub fn try_get<T>( self, field: Pack32<T, ErrorStatus>, ) -> Result<T, <T as FromBits<u32>>::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 a T-typed value could be constructed from the bits in src
  • Err(T::Error) if src does not contain a valid bit pattern for a T-typed value, as determined by T’s [FromBits::try_from_bits implementation.
Source

pub fn assert_valid()

Asserts that all the packing specs for this type are valid.

This is intended to be used in unit tests.

Source

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.

Source

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.

Source§

impl ErrorStatus

Source

pub fn is_error(&self) -> bool

Returns true if an error is present, or false if no error bits are set.

Trait Implementations§

Source§

impl Binary for ErrorStatus

Source§

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

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

impl Clone for ErrorStatus

Source§

fn clone(&self) -> ErrorStatus

Returns a copy 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 ErrorStatus

Source§

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

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

impl Default for ErrorStatus

Source§

fn default() -> ErrorStatus

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

impl Display for ErrorStatus

Source§

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

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

impl From<u32> for ErrorStatus

Source§

fn from(val: u32) -> ErrorStatus

Converts to this type from the input type.
Source§

impl LowerHex for ErrorStatus

Source§

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

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

impl UpperHex for ErrorStatus

Source§

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

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

impl Copy for ErrorStatus

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> Az for T

Source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

Source§

fn cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> CheckedAs for T

Source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

Source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

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

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> OverflowingAs for T

Source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

Source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
Source§

impl<T> SaturatingAs for T

Source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

Source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
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.
Source§

impl<T> UnwrappedAs for T

Source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

Source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
Source§

impl<T> WrappingAs for T

Source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

Source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.