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);

相关推荐
染指11101 天前
22.全局句柄表-Windows驱动
windows·内核·句柄表
染指11105 天前
19.0环保护进程-Windows驱动
windows·驱动开发·内核·保护
Trouvaille ~11 天前
【Linux】文件描述符与重定向原理:揭开Linux文件操作的神秘面纱
linux·运维·服务器·开发语言·内核·进程·重定向
程序猿编码19 天前
Linux内核模块实现TCP连接强制断开机制
linux·网络·tcp/ip·内核·内核模块
极智-99622 天前
强制重启?【图文详解】笔记本电脑强制重启按什么键?蓝屏强制重启?
重启·电脑死机·强制重启·强制重启快捷键·电脑蓝屏·长按笔记本电脑电源键重启·长按重启
VirtuousLiu1 个月前
单个按键实现开关机方案推荐
开机·关机·一键开关机
NiKo_W2 个月前
Linux UdpSocket的应用
linux·服务器·网络·内核·线程
NiKo_W2 个月前
Linux 线程控制
linux·数据结构·内核·线程·进程·线程控制
NiKo_W3 个月前
Linux 信号
linux·内核·信号