Linux中userfaultfd()系统调用的旧选择?

时间:2018-03-31 02:38:16

标签: c linux version compatibility system-calls

我想在C程序中使用userfaultfd()系统调用,但它在旧的Linux内核中不存在。 userfaultfd()系统调用的替代方案是什么,它也存在于旧版Linux内核中? 谢谢!

编辑:我想要的是一种获取usefaultfd()的一些主要优点的方法,主要处理页面错误。

1 个答案:

答案 0 :(得分:0)

mprotect(2)包含PROT_NONE的页面,因此所有访问都会出错并实现SIGSEGV处理程序,您可以在其中处理错误。 libsigsegv抽象出一些复杂性:

  

GNU libsigsegv是一个用于在用户模式下处理页面错误的库。当程序试图访问当前不可用的内存区域时,会发生页面错误。捕获和处理页面错误是实现的有用技术:

     
      
  • 可分页的虚拟内存,
  •   
  • 对持久性数据库的内存映射访问,
  •   
  • 分代垃圾收集器,
  •   
  • 堆栈溢出处理程序,
  •   
  • 分布式共享内存,
  •   
  • ...
  •