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信息可以从