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

相关推荐
-SGlow-1 天前
Linux相关概念和易错知识点(51)(mmap文件映射、共享内存原理、malloc的原理)
linux·c语言·算法·内核
mounter6256 天前
深度解析 Linux 内核 devlink:从硬件控制到跨功能速率调度的演进
linux·运维·服务器·网络·内核
零K沁雪8 天前
Linux 内核中网络地址快速打印符
linux·内核
零K沁雪9 天前
Linux 内核中与网络地址相关的函数
linux·内核
零K沁雪9 天前
Linux 内核遍历宏介绍
linux·内核
零K沁雪10 天前
内核定时器
linux·内核
mounter62511 天前
【LSF/MM内核前沿】Linux 内存回收推倒重来?解析 MGLRU 与传统 LRU 的“统一之战”
linux·运维·服务器·网络·内核·内存回收
Qt程序员14 天前
深入理解 Linux 内核 RCU 机制:从原理到实现
linux·c++·内核·linux内核·rcu
零K沁雪15 天前
skb_buff 相关函数
linux·内核
程序猿编码22 天前
轻量又灵活:一款伪造TCP数据包的iptables扩展实现解析(C/C++代码实现)
linux·c语言·网络·c++·tcp/ip·内核·内核模块