Struct x86_64::structures::idt::InterruptStackFrame[][src]

#[repr(C)]
pub struct InterruptStackFrame { /* fields omitted */ }
Expand description

Wrapper type for the interrupt stack frame pushed by the CPU.

This type derefs to an InterruptStackFrameValue, which allows reading the actual values.

This wrapper type ensures that no accidental modification of the interrupt stack frame occurs, which can cause undefined behavior (see the as_mut method for more information).

Implementations

impl InterruptStackFrame[src]

pub unsafe fn as_mut(&mut self) -> Volatile<&mut InterruptStackFrameValue>[src]

Gives mutable access to the contents of the interrupt stack frame.

The Volatile wrapper is used because LLVM optimizations remove non-volatile modifications of the interrupt stack frame.

Safety

This function is unsafe since modifying the content of the interrupt stack frame can easily lead to undefined behavior. For example, by writing an invalid value to the instruction pointer field, the CPU can jump to arbitrary code at the end of the interrupt.

Also, it is not fully clear yet whether modifications of the interrupt stack frame are officially supported by LLVM’s x86 interrupt calling convention.

Trait Implementations

impl Debug for InterruptStackFrame[src]

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

Formats the value using the given formatter. Read more

impl Deref for InterruptStackFrame[src]

type Target = InterruptStackFrameValue

The resulting type after dereferencing.

fn deref(&self) -> &Self::Target[src]

Dereferences the value.

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.