trap_handler

Function trap_handler 

Source
#[unsafe(no_mangle)]
pub extern "C" fn trap_handler(trap_frame: &mut TrapFrame)
Expand description

陷阱处理程序 从中断处理入口跳转到这里时, 陷阱帧的地址(sp)被隐式地作为参数 a0 传递给了 trap_handler 函数。 在这里,trap_frame 指向了保存的 TrapFrame 结构体。 此外,在通过 stvec 跳转到中断处理入口时,SSIE 被自动清除, 因此在内核陷阱处理程序开始时,中断是被禁用的。 必须从这个函数正常返回后,通过 restore 中的 sret 指令才能正确恢复中断状态。

§警告:

  • 不要在中断处理中调用任何可能引起内存分配或阻塞的函数, 因为这可能会导致死锁或不可预测的行为。
  • 确保在中断处理程序中正确保存和恢复所有必要的寄存器状态, 以避免破坏正在运行的进程的状态。
  • 注意陷阱处理程序的执行时间, 避免长时间占用 CPU,影响系统的响应性。