这与:https ://stackoverflow.com/a/13413099/1284631
现在,问题是:
为什么 reboot() 系统调用,当用LINUX_REBOOT_CMD_HALT
参数调用时(见这里: http: //lxr.linux.no/linux+v3.6.6/kernel/sys.c#L480)do_exit(0)
在已经调用之后调用kernel_halt()
,因为调用kernel_halt()
煮沸调用stop_this_cpu()
(见这里:http: //lxr.linux.no/linux+v3.6.6/arch/x86/kernel/process.c#L519),作为native_machine_halt()
(见这里:http://lxr.linux .no/linux+v3.6.6/arch/x86/kernel/reboot.c#L680)。
或者,在我看来,它stop_this_cpu()
永远不会返回(它以无限循环结束)。
所以,它被do_exit(0)
调用以防万一它kernel_halt()
没有完成它的工作并且它返回?那为什么不panic()
直接取而代之呢?