系统相关
首页 > 系统相关> > 从内核空间关闭(嵌入)linux

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

作者:互联网

我正在为基于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,embedded-linux,linux-kernel
来源: https://codeday.me/bug/20191006/1862044.html