我有一个进程PID,它访问不允许访问的内存区域,CPU在内核中创建一个陷阱,该陷阱调用do_page_fault((,它将向用户进程发送SIGSEGV。用户进程有一个自定义信号处理程序,它具有一些逻辑,并恢复出错指令。我想做的是将这个信号处理程序逻辑移动到内核空间,并防止SIGSEGV被发送。为此,我可以写一个内核模块来劫持这个PID的故障处理程序吗?还是必须将逻辑添加到do_page_fault((?一些指导会有所帮助。
userfaultfd((可能对您有用。它允许您处理用户模式下的页面错误。