我正在尝试为以下内核 API 添加功能:
extern void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd);
我想知道第二个参数char *cmd有什么用。
我无法合理化对第二个参数cmd的需求,尽管第一个参数reboot_mode很有意义......
有人可以解释一下吗?
我正在尝试为以下内核 API 添加功能:
extern void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd);
我想知道第二个参数char *cmd有什么用。
我无法合理化对第二个参数cmd的需求,尽管第一个参数reboot_mode很有意义......
有人可以解释一下吗?
我想知道第二个参数有什么用
char *cmd
。
有人可以解释一下吗?
这称为 via machine_restart()
,而后者又由 调用kernel_restart()
。根据内核文档,
@cmd:指向缓冲区的指针,该缓冲区包含要执行的重启命令或 %NULL
您可以通过命令来重新启动注释,这就是您所看到的。在大多数情况下,ARM 挂钩只是忽略它。您可以检查它NULL
或忽略它。
从man 2 reboot
,
上述动作的确切效果取决于架构。对于 i386 架构,附加参数目前不做任何事情(2.1.122),但重启的类型可以通过内核命令行参数(“reboot=...”)来确定是暖的还是冷的,或者通过 BIOS 或者通过 BIOS。
您可以随意忽略它,但如果您需要用户空间来发出特殊信号,则可以使用它。几乎总是,你会得到cmd == NULL
。
注意:此命令总是返回失败;它不应该返回 ;-) 请参阅定义LINUX_REBOOT_CMD_RESTART2
以了解这cmd
是非 NULL 的情况。