#[repr(C)]pub struct TrapFrame {Show 22 fields
pub rax: usize,
pub rbx: usize,
pub rcx: usize,
pub rdx: usize,
pub rsi: usize,
pub rdi: usize,
pub rbp: usize,
pub rsp: usize,
pub r8: usize,
pub r9: usize,
pub r10: usize,
pub r11: usize,
pub r12: usize,
pub r13: usize,
pub r14: usize,
pub r15: usize,
pub _pad: usize,
pub trap_num: usize,
pub error_code: usize,
pub rip: usize,
pub cs: usize,
pub rflags: usize,
}
Expand description
Trap frame of kernel interrupt
Trap handler
You need to define a handler function like this:
use trapframe::TrapFrame;
#[no_mangle]
extern "sysv64" fn trap_handler(tf: &mut TrapFrame) {
match tf.trap_num {
3 => {
println!("TRAP: BreakPoint");
tf.rip += 1;
}
_ => panic!("TRAP: {:#x?}", tf),
}
}
Fields§
§rax: usize
§rbx: usize
§rcx: usize
§rdx: usize
§rsi: usize
§rdi: usize
§rbp: usize
§rsp: usize
§r8: usize
§r9: usize
§r10: usize
§r11: usize
§r12: usize
§r13: usize
§r14: usize
§r15: usize
§_pad: usize
§trap_num: usize
§error_code: usize
§rip: usize
§cs: usize
§rflags: usize
Trait Implementations§
impl Copy for TrapFrame
Auto Trait Implementations§
impl RefUnwindSafe for TrapFrame
impl Send for TrapFrame
impl Sync for TrapFrame
impl Unpin for TrapFrame
impl UnwindSafe for TrapFrame
Blanket Implementations§
§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more