如何在linux内核中调用用户空间的程序

如何在linux内核中调用用户空间的程序,第1张

教科书里的Linux代码例子都已作古,所以看到的代码不能当真,领会意思就行了

比如以前的init进程的启动代码

execve(init_filename,argv_init,envp_init)

现在改为

static void run_init_process(char *init_filename)

{

argv_init[0] = init_filename

kernel_execve(init_filename, argv_init, envp_init)

}

好的,聪明人就发派春雀现,linux内核中尘早调用用户空间的程序可以使用init这样的方式,调用 kernel_execve

不过内核还是提供了更好的森芦辅助接口call_usermodehelper,自然最后也是调用kernel_execve

调用特定的内核函数(系统调用)是 GNU/Linux 中软件开发的原本就有的组成部分。但如果方向反过来呢,内核空间调用用户空间?确实有一些有这种特性的应用程序需要每天使用。例如,当内核找到一个设备,这时需要加载某个模块,进程如何处理?动态模块加载在内核通过 usermode-helper 进程进行。

让我们从探索 usermode-helper 应用程序编程接口(API)以及在内核中使用的例子开始。 然后,使用 API 构造一个示例应用程序,以便更好地理解其工作原理与局限。

usermode-helper API

usermode-helper API 是个很简单的 API,其选项为用户熟知。例如,要创建一个用户空间进程,通常只要设置名称为 executable,选项都为 executable,以及一组环境变量(指向 execve 主页)。创建内核进程也是一样。但由于创建内核空间进程,还需要设置一些额外选项。

开不了机或开机进不去,是与您关机前的不当 *** 作有关系吧?比如:玩游戏、看视谈族岁频、 *** 作大的东西、使用电脑时间长含睁造成的卡引起的吧?或下载了不合适的东西、或删除了系统文件、或断电关机等,故障不会无缘无故的发生穗樱吧?

按电源键反复开关机试试,放一段时间试试,确实不可以就重装系统吧,如果自己重装不了,花30元到维修那里找维修的人帮助您。

只要自己的电脑不卡机、蓝屏、突然关机,开机就不会这样了。

有问题请您追问我。

推荐使用手机自带的官方系统,官方系统更稳定而且实时更新,修补之前的BUG,此饥卖建议经常关注官网和官方微博的更新动态,将手机的系统保持在最新的版本,如果由于刷了第三方的系统,导致手机系统异常,请直接前往就近的客服中心处理,nubia提供ROOT保修服务,在刷第三方系统时候没有后顾之忧,可放心使用nubia手机。如需帮助,肢仔请咨询森逗官方400客服热线咨询。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12263555.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存