수행하고 있는 project에서 가끔 reboot이 되지 않는 문제가 발생해서
reboot() system call을 추적해봤다.
reboot() system call을 추적해봤다.
kernel/sys.c:sys_reboot() switch (cmd) { case LINUX_REBOOT_CMD_RESTART: kernel_restart(NULL); break; kernel/sys.c:kernel_restart() kernel_restart_prepare(cmd); if (!cmd) printk(KERN_EMERG "Restarting system.\n"); else printk(KERN_EMERG "Restarting system with command '%s'.\n", cmd); machine_restart(cmd); arch/arm/kernel/process.c:machine_restart() arm_pm_restart(reboot_mode); arch/arm/kernel/process.c: void (*arm_pm_restart)(char str) = arm_machine_restart; arch/arm/kernel/process.c:arm_machine_restart() ... /* * Now call the architecture specific reboot code. */ arch_reset(mode); /* * Whoops - the architecture was unable to reboot. * Tell the user! */ mdelay(1000); printk("Reboot failed -- System halted\n"); while (1);