[Linux]如何手动触发kernel restart

所谓Linux panic就是碰到错误情况时, code里主动调的一个函数panic(),里面出不来,会让cpu重启。 不允许再乱执行代码,以便保留现场。
像下面这个例子,就是在kernel fault函数里检查到非法无效地址访问后的错误处理,主动调了panic().
通过访问地址可以区分是kernel代码(>0xC0000000)还是user space 代码。

writing 'C' to /proc/sysrq-trigger is like sysrq-C

echo c > /proc/sysrq-trigger

代码在: \kernel\drivers\tty\sysrq.c

本质上是操作NULL 指针引起crash

调用路径: 从下往上
panic
die
do_kernel_fault
do_page_fault
do_DataAbort
dabt_svc
sysrq_handle_crash
__handle_sysrq
write_sysrq_trigger
proc_reg_write
vfs_write
sys_write
ret_fast_syscall

你可能感兴趣的:([Linux]如何手动触发kernel restart)