函数逻辑报告 |
Source Code:mm\memory.c |
Create Date:2022-07-27 16:10:18 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:do_fault_around() tries to map few pages around the fault address. The hope* is that the pages will be needed soon and this will lower the number of* faults to handle.* It uses vm_ops->map_pages() to map the pages, which skips the page if it's
函数原型:static vm_fault_t do_fault_around(struct vm_fault *vmf)
返回类型:vm_fault_t
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| struct vm_fault * | vmf |
| 3591 | ret等于0 |
| 3597 | off等于address减Faulting virtual address 右移PAGE_SHIFT determines the page size 位按位与he i386 is two-level, so we don't really have any* PMD directory physically.减1 |
| 3598 | start_pgoff减等于off |
| 3607 | end_pgoff等于三数取小(end_pgoff, vma_pages(Target VMA ) + Offset (within vm_file) in PAGE_SIZEunits - 1, start_pgoff + nr_pages - 1) |
| 3610 | 如果pmd_none( * Pointer to pmd entry matching* the 'address' )则 |
| 3612 | 如果非Pre-allocated pte page table.* vm_ops->map_pages() calls* alloc_set_pte() from atomic context.* do_fault_around() pre-allocates* page table to avoid allocation from* atomic context.则转到:out |
| 3614 | smp_wmb() |
| 3617 | map_pages(vmf, start_pgoff, end_pgoff) |
| 3621 | ret等于VM_FAULT_NOPAGE |
| 3622 | 转到:out |
| 3626 | 如果非Pointer to pte entry matching* the 'address'. NULL if the page* table hasn't been allocated.则转到:out |
| 3631 | 如果非pte_none( * Pointer to pte entry matching* the 'address'. NULL if the page* table hasn't been allocated.)则ret等于VM_FAULT_NOPAGE |
| 3633 | pte_unmap_unlock(Pointer to pte entry matching* the 'address'. NULL if the page* table hasn't been allocated., Page table lock.* Protects pte page table if 'pte'* is not NULL, otherwise pmd.) |
| 3634 | out : |
| 3635 | Faulting virtual address 等于address |
| 3636 | Pointer to pte entry matching* the 'address'. NULL if the page* table hasn't been allocated. = NULL |
| 3637 | 返回:ret |
| 名称 | 描述 |
|---|---|
| do_read_fault |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |