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

相关推荐
charlie1145141912 天前
嵌入式Linux驱动开发(7) 从虚拟设备到真实硬件 —— LED驱动硬件基础
linux·开发语言·驱动开发·内核·c
Paraverse_徐志斌11 天前
Linux 内核与 Zero-Copy 零拷贝
linux·运维·内核·零拷贝
REDcker15 天前
iOS 与 Android:浏览器引擎、WebView 与生态差异概览
android·ios·内核·浏览器·webview
程序猿编码18 天前
一个授予普通进程ROOT权限的Linux内核级后门:原理与实现深度解析
linux·运维·服务器·内核·root权限
-SGlow-22 天前
Linux相关概念和易错知识点(51)(mmap文件映射、共享内存原理、malloc的原理)
linux·c语言·算法·内核
mounter6251 个月前
深度解析 Linux 内核 devlink:从硬件控制到跨功能速率调度的演进
linux·运维·服务器·网络·内核
零K沁雪1 个月前
Linux 内核中网络地址快速打印符
linux·内核
零K沁雪1 个月前
Linux 内核中与网络地址相关的函数
linux·内核
零K沁雪1 个月前
Linux 内核遍历宏介绍
linux·内核
零K沁雪1 个月前
内核定时器
linux·内核