RK3588 Android12内核中可直接调用的关机和重启接口函数

这两个函数一般是在紧急或特殊情况下执行的硬件层面关机和重启函数(比如过温)。即非正常关机和重启流程(不含系统层面的关机重启前进程清理资源释放等过程)。

关机函数:void kernel_power_off(void)

定义代码文件:kernel-5.10\kernel\reboot.c,如下:

/**

* kernel_power_off - power_off the system

*

* Shutdown everything and perform a clean system power_off.

*/

void kernel_power_off(void)

{

kernel_shutdown_prepare(SYSTEM_POWER_OFF);

if (pm_power_off_prepare)

pm_power_off_prepare();

migrate_to_reboot_cpu();

syscore_shutdown();

pr_emerg("Power down\n");

kmsg_dump(KMSG_DUMP_SHUTDOWN);

machine_power_off();

}

EXPORT_SYMBOL_GPL(kernel_power_off);

内核其他代码中使用时:1,使用extern引用函数;2,直接调用函数。参考如下:

引用:

extern void kernel_power_off(void);

调用:

kernel_power_off();

重启函数:void kernel_restart(char *cmd)

定义代码文件:kernel-5.10\kernel\reboot.c,如下:

/**

* kernel_restart - reboot the system

* @cmd: pointer to buffer containing command to execute for restart

* or %NULL

*

* Shutdown everything and perform a clean reboot.

* This is not safe to call in interrupt context.

*/

void kernel_restart(char *cmd)

{

kernel_restart_prepare(cmd);

migrate_to_reboot_cpu();

syscore_shutdown();

if (!cmd)

pr_emerg("Restarting system\n");

else

pr_emerg("Restarting system with command '%s'\n", cmd);

kmsg_dump(KMSG_DUMP_SHUTDOWN);

machine_restart(cmd);

}

EXPORT_SYMBOL_GPL(kernel_restart);

内核其他代码中使用时:1,使用extern引用函数;2,直接调用函数。参考如下:

引用:

extern void kernel_restart(char *cmd)

调用:

kernel_restart(NULL);

相关推荐
jiuri_12154 天前
深入理解 Linux 内核同步机制
linux·内核
gsls2008085 天前
移远EC20对UAC音频设备识别分析
内核·音频·alsa·固件·uac·ec20·移远
程序猿编码14 天前
隐形的内核后门:无模块Linux内核植入技术详解
linux·c语言·内核·linux内核·内核植入
zfj32118 天前
Linux内核和发行版的的区别、职责
linux·运维·服务器·内核·linux发行版
染指111019 天前
24.IDA逆向句柄表算法-Windows驱动
windows·驱动开发·内核·保护·windows驱动
亚林瓜子20 天前
mac上面重启Spotlight(解决搜索无法启用应用程序问题)
mac·重启·应用程序·spotlight
染指111023 天前
22.全局句柄表-Windows驱动
windows·内核·句柄表
染指11101 个月前
19.0环保护进程-Windows驱动
windows·驱动开发·内核·保护
Trouvaille ~1 个月前
【Linux】文件描述符与重定向原理:揭开Linux文件操作的神秘面纱
linux·运维·服务器·开发语言·内核·进程·重定向