在 android source for the reboot command 中查找我们找到以下行:
__reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, \
LINUX_REBOOT_CMD_RESTART2, argv[optind]);
这是使用特定命令重新启动系统的标准 Linux 系统调用,请参阅 Unix System Call Reboot .
在 Android 中,此命令用于告诉引导加载程序以恢复模式启动内核或在引导加载程序中进入快速启动模式。
我的问题是:引导加载程序如何获取命令?这个功能在 U-Boot 中实现了吗?(我无法通过 Google 或 U-Boot 源代码搜索找到它。)
此外,这似乎不是 Android 特有的,而是 Linux 执行“使用命令重启”的方式。关于在 Linux 中如何“正常”处理/使用它的任何信息?
最佳答案
当使用 LINUX_REBOOT_CMD_RESTART2
重新启动系统时,提供的命令字符串将传递给所有使用 register_reboot_notifer()
注册的通知程序,最后传递给 machine_restart( )
- 实际执行系统重启的特定于体系结构的函数。
大多数体系结构完全忽略传递的命令 - 有关不这样做的示例,请参阅 SPARC。 SPARC implementation of machine_restart()
将提供的字符串传递给 PROM 的 boot
命令。
ARM implementation of machine_restart()
最终将提供的命令传递给在每个 ARM 平台上单独实现的 arch_reset()
- 据我所知,大多数(如果不是全部)这些实现都忽略了传递的命令,至少在上游内核中是这样.这可能不是您正在寻找的机器人。
关于android - 引导加载程序如何在 "restarting system with command"之后获取命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5472761/