1

我正在尝试为以下内核 API 添加功能:

extern void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd);
  • 拱/臂/包括/asm/system_misc.h

  • 我想知道第二个参数char *cmd有什么用。

  • 我无法合理化对第二个参数cmd的需求,尽管第一个参数reboot_mode很有意义......

有人可以解释一下吗?

4

1 回答 1

1

我想知道第二个参数有什么用char *cmd
有人可以解释一下吗?

这称为 via machine_restart(),而后者又由 调用kernel_restart()。根据内核文档,

@cmd:指向缓冲区的指针,该缓冲区包含要执行的重启命令或 %NULL

您可以通过命令来重新启动注释,这就是您所看到的。在大多数情况下,ARM 挂钩只是忽略它。您可以检查它NULL或忽略它。

man 2 reboot,

上述动作的确切效果取决于架构。对于 i386 架构,附加参数目前不做任何事情(2.1.122),但重启的类型可以通过内核命令行参数(“rebo​​ot=...”)来确定是暖的还是冷的,或者通过 BIOS 或者通过 BIOS。

您可以随意忽略它,但如果您需要用户空间来发出特殊信号,则可以使用它。几乎总是,你会得到cmd == NULL

注意:此命令总是返回失败;它不应该返回 ;-) 请参阅定义LINUX_REBOOT_CMD_RESTART2以了解这cmd是非 NULL 的情况。

于 2013-10-28T14:47:10.217 回答