ISR 如何知道它在内核模式下中断进程或另一个中断(这会启用进一步的中断)——当然也在内核模式下。
如果这个问题很广泛,请针对 MIPS 上的 Linux。
答案1
显然有一个通用函数(不确定它是否不仅仅是一个约定)die_if_kernel
,它说明了这一点。
MIPS 实现regs
使用谓词函数检查传递给 ISR 的(中断之前保存的寄存器)user_mode()
。
http://elixir.free-electrons.com/linux/latest/source/arch/mips/include/asm/ptrace.h?v=4.12#L169
我想看看这样的地方,因为当陷阱/错误发生在内核内部时,它们通常被认为是致命的。
http://elixir.free-electrons.com/linux/latest/source/arch/mips/kernel/traps.c#L1230