加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux-kernel – 用户定义的页面错误和异常处理程序

发布时间:2020-12-13 23:01:15 所属栏目:Linux 来源:网络整理
导读:我试图了解我们是否可以在内核/用户模式下添加页面错误处理程序/异常处理程序,并在将控件返回给内核之前处理我们引发的错误. 这里的任务不是修改现有的内核代码(do_page_fault fn),而是添加一个用户定义的处理程序,当页面错误或异常被触发时将被查找 人们可
我试图了解我们是否可以在内核/用户模式下添加页面错误处理程序/异常处理程序,并在将控件返回给内核之前处理我们引发的错误.
这里的任务不是修改现有的内核代码(do_page_fault fn),而是添加一个用户定义的处理程序,当页面错误或异常被触发时将被查找

人们可以找到像“kprobe”这样的工具,它们可以在指令中提供钩子,但看起来这样做不符合我的目的.

如果有人可以帮助我理解这一点或指向好的参考,那将会很棒.

解决方法

从用户空间,您可以为SIGSEGV定义信号处理程序,因此无论何时进行无效的内存访问,都将调用您自己的函数.当与mprotect()结合使用时,程序可以管理自己的虚拟内存,所有这些都来自用户空间.

但是,我得到的印象是,您正在寻找一种方法来拦截所有页面错误(主要,次要和无效)并在响应中调用任意内核函数.我不知道干净的方法.当我在自己的研究项目中需要这个功能时,我最终将代码添加到do_page_fault().它对我来说很好,但它是一个黑客.如果有人知道一个干净的方法来做这件事我会很感兴趣(即,可以由香草内核上的模块使用).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读