Broadcom SDK中reboot的流程分析

/sbin/reboot 链接到rc文件à

Path

File

Function

Remark

.

init.c

fatal_signal()

 

 

 

shutdown_system()

 

 

 

kill(-1, SIGTERM);

kill(-1, SIGKILL);

向所有进程发送信号

 

 

reboot()

 

 

 

调用内核接口

 

 

调用busybox中的reboot()函数à

Busybox调用顺序:

Path

File

Function

Remark

.

init.c

halt_reboot_pwoff()/

restart_handler()

 

 

 

run_shutdown_and_kill_processes();

 

 

 

kill(-1, SIGTERM); kill(-1, SIGKILL);

向所有进程发送信号

 

 

pause_and_low_level_reboot()

调用底层reboot接口

 

 

reboot();  

 

 

 

调用内核接口

 

注:rc和busybox中的reboot命令二选一;

 

内核空间:

Path

File

Function

Remark

kernel/

sys.c

SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd,

                   void __user *, arg)

定义内核入口

kernel/

sys.c

kernel_restart()

 

arch/arm/kernel

process.c

machine_restart()

 

arch/arm/kernel

process.c

arm_pm_restart()

 

arch/arm/kernel

process.c

arm_machine_restart()

arm架构通用接口

arch/arm/mach-brcm-hnd

board_ns.c

arch_reset()

平台相关

main/src/shared

hndarm_ca9.c

hnd_cpu_reset()

 

main/src/shared

siutils_rsdb.c

si_watchdog()

 

 

 

si_corereg(sih, SI_CC_IDX, OFFSETOF(chipcregs_t, watchdog), ~0, ticks)

设置watchdog进行复位

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值