函数逻辑报告 |
Source Code:mm\memory.c |
Create Date:2022-07-27 16:10:39 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:do_numa_page
函数原型:static vm_fault_t do_numa_page(struct vm_fault *vmf)
返回类型:vm_fault_t
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| struct vm_fault * | vmf |
| 3816 | vma等于Target VMA |
| 3818 | page_nid等于NUMA_NO_NODE |
| 3821 | bool migrated = false |
| 3824 | flags等于0 |
| 3831 | Page table lock.* Protects pte page table if 'pte'* is not NULL, otherwise pmd.等于pte_lockptr(The address space we belong to. , Pointer to pmd entry matching* the 'address' ) |
| 3832 | 加自旋锁 |
| 3834 | 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.) |
| 3835 | 转到:out |
| 3842 | old_pte等于Start a pte protection read-modify-write transaction, which* protects against asynchronous hardware modifications to the pte |
| 3844 | pte等于pte_mkyoung(pte) |
| 3845 | 如果was_writable则pte等于pte_mkwrite(pte) |
| 3851 | 如果非page则 |
| 3852 | 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.) |
| 3853 | 返回:0 |
| 3857 | 如果PageCompound(page)则 |
| 3858 | 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.) |
| 3859 | 返回:0 |
| 3870 | 如果非pte_write(pte)则flags或等于TNF_NO_GROUP |
| 3877 | 如果page_mapcount(page)大于1且Flags, see mm.h. 按位与VM_SHARED则flags或等于TNF_SHARED |
| 3880 | last_cpupid等于page_cpupid_last(page) |
| 3881 | page_nid等于page_to_nid(page) |
| 3882 | target_nid等于numa_migrate_prep(page, vma, Faulting virtual address , page_nid, & flags) |
| 3884 | 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.) |
| 3885 | 如果target_nid恒等于NUMA_NO_NODE则 |
| 3891 | migrated等于migrate_misplaced_page(page, vma, target_nid) |
| 3892 | 如果migrated则 |
| 3893 | page_nid等于target_nid |
| 3894 | flags或等于TNF_MIGRATED |
| 3895 | 否则flags或等于TNF_MIGRATE_FAIL |
| 3898 | out : |
| 3899 | 如果page_nid不等于NUMA_NO_NODE则task_numa_fault(last_cpupid, page_nid, 1, flags) |
| 3901 | 返回:0 |
| 名称 | 描述 |
|---|---|
| handle_pte_fault | These routines also need to handle stuff like marking pages dirty* and/or accessed for architectures that don't do it in hardware (most* RISC architectures) |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |