我試圖在功能掛鉤以下內核API:參數到ARM的Linux的arm_pm_restart()
extern void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd);
我想知道有什麼用的第二參數char * cmd。
我無法理順的第二個參數CMD的需要,雖然第一個參數reboot_mode做適當的意義......
可有人請解釋一下嗎?
我試圖在功能掛鉤以下內核API:參數到ARM的Linux的arm_pm_restart()
extern void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd);
我想知道有什麼用的第二參數char * cmd。
我無法理順的第二個參數CMD的需要,雖然第一個參數reboot_mode做適當的意義......
可有人請解釋一下嗎?
我想知道第二個參數
char *cmd
的用法是什麼。
有人可以解釋一下嗎?
這被稱爲通過machine_restart()
,它又被稱爲kernel_restart()
。由於每個內核文檔,
@cmd:指向緩衝區包含要執行的命令重啓或NULL%
你可以通過一個命令reboot注這是你所看到的。大多數情況下,ARM鉤子只是忽略它。您可以檢查它是否爲NULL
或者也可以忽略它。
從man 2 reboot
,
上述行動的精確效果取決於架構。對於i386體系結構,額外的參數目前沒有做任何事情(2.1.122),但重啓的類型可以由內核命令行參數(「reboot = ...」)確定爲溫暖或冷的,並且無論是硬盤還是通過BIOS。
您可以自由地忽略它,但如果您需要用戶空間來表示某些特殊信號,則可以使用它。幾乎總是,你會得到cmd == NULL
。
注:該命令總是失敗返回;它不應該返回;-)請參閱define LINUX_REBOOT_CMD_RESTART2
以瞭解cmd
是否爲非NULL的情況。