Skip to main content

TrapFrame

Struct TrapFrame 

Source
#[repr(C, packed(1))]
pub struct TrapFrame {
Show 21 fields pub rbx: u64, pub r12: u64, pub r13: u64, pub r14: u64, pub r15: u64, pub rbp: u64, pub r11: u64, pub r10: u64, pub r9: u64, pub r8: u64, pub rsi: u64, pub rdi: u64, pub rdx: u64, pub rcx: u64, pub rax: u64, pub err_code: u64, pub rip: u64, pub cs: u64, pub rflags: u64, pub rsp: u64, pub ss: u64,
}
Expand description

TrapFrame is saved and restored by the interrupt handler assembly code upon interrupt entry and exit.

The complete picture (in pushing sequence, addr from high to low)

Fields§

§rbx: u64§r12: u64§r13: u64§r14: u64§r15: u64§rbp: u64§r11: u64§r10: u64§r9: u64§r8: u64§rsi: u64§rdi: u64§rdx: u64§rcx: u64§rax: u64§err_code: u64

for some exceptions, the CPU automatically pushes an error code (see docs/interrupt.txt) to the stack. For those who don’t have error code, we manually push a dummy value (0)

§rip: u64§cs: u64§rflags: u64§rsp: u64§ss: u64

Implementations§

Source§

impl TrapFrame

Source

pub fn from_user(&self) -> bool

get rpl from auto-pushed cs register

Trait Implementations§

Source§

impl Debug for TrapFrame

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for TrapFrame

§

impl RefUnwindSafe for TrapFrame

§

impl Send for TrapFrame

§

impl Sync for TrapFrame

§

impl Unpin for TrapFrame

§

impl UnsafeUnpin for TrapFrame

§

impl UnwindSafe for TrapFrame

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = !

The type returned in the event of a conversion error.
§

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

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
§

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

Performs the conversion.