对于具有特定硬件集成的项目,我们需要修改linux内核的page_fault处理程序,我想知道以下是否可能:
1)在do_page_fault期间,我们可以知道哪个线程生成了该错误(线程和进程)。平台是ARM,因此如果有帮助,可以使用特定于臂的中断寄存器
2)我们可以访问该进程的用户空间内存并读取我们的用户模式库之前留给我们的一些信息吗? (假设它已被探测并锁定在记忆中)
如果有人愿意,可在评论中进一步解释。
答案 0 :(得分:0)
@ 1):如果从用户空间应用程序(可能)访问内存时发生页面错误,则页面错误处理程序在该进程的上下文中运行。从CPU的角度来看,由于MMU的例外,它进入内核模式。所以是的,你可以获得被中断的用户空间进程的pid / tid。
@ 2):是的。内核可以访问所有内存。如果它是一个32位系统你需要Highmem支持,如果它是64位,那么你就可以开箱即用。