handle_mm_fault是与架构无关的page fault处理部分,主要是根据发生page fault的虚拟地址和上述步骤查找的对应的vma以及error code转换后的flag具体错误类型进行处理,是内核处理page fault的核心函数,其接口如下:

vm_fault_t handle_mm_fault(struct vm_area_struct *vma, unsigned long address, unsigned int flags)

参数:

  • struct vm_area_struct *vma: 发生pag fault 地址对应的vma
  • unsigned long address:产生page fault的地址
  • unsigned int flags:根据硬件具体返回的error code 转换成相应flag进程处理。

返回值:

  • vm_fault_t: 函数返回的处理page fault 值,如果为0 处理成功,其他非零值代码各个错误信息

vm_fault_t和flags信息可以从