gpt4 book ai didi

linux - 从内核空间关闭(嵌入式)linux

转载 作者:IT王子 更新时间:2023-10-29 00:26:16 25 4
gpt4 key购买 nike

我正在为基于 ARM9 的平台 Olinuxino 开发 2.6.35 内核的修改版本。我正在尝试修改电源管理驱动程序(架构特定部分)。

处理器是飞思卡尔 i.MX23。该处理器有一个称为 PSWITCH 的“特殊”引脚,可触发由电源管理驱动程序处理的中断。如果按下开关,系统进入待机状态。这是通过调用 pm_suspend(PM_SUSPEND_STANDBY) 在驱动程序中完成的。

考虑到我的硬件设置,我想关闭系统。所以我的问题是:

内核空间进程触发干净的系统暂停/关机的首选方式是什么?

我想那里有一个不错的小函数调用,但到目前为止我找不到它。

我的内核代码(我正在处理的文件是 arch/arm/mach-mx23/pm.c)可以在这里找到:github.com/spairal/linux-for-lobster ,尽管我的问题需要一个通用的 Linux 内核方法。

最佳答案

一般的方法是让您的驱动程序调用shutdown作为用户空间助手:

static const char * const shutdown_argv[] = 
{ "/sbin/shutdown", "-h", "-P", "now", NULL };

call_usermodehelper(shutdown_argv[0], shutdown_argv, NULL, UMH_NO_WAIT);

(假设您安装了 /sbin/shutdown 二进制文件)。这将彻底关闭用户空间,卸载文件系统,然后请求内核关闭和断电。

但是,您可以做得比这更好 - 例如,如果您可以保证没有磁盘文件系统挂载读/写,您可以告诉内核线程调用 kernel_power_off()函数(不应从中断上下文中完成)。

关于linux - 从内核空间关闭(嵌入式)linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18296686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com