函数逻辑报告 |
Source Code:mm\huge_memory.c |
Create Date:2022-07-27 17:35:11 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:do_huge_pmd_anonymous_page
函数原型:vm_fault_t do_huge_pmd_anonymous_page(struct vm_fault *vmf)
返回类型:vm_fault_t
参数:
类型 | 参数 | 名称 |
---|---|---|
struct vm_fault * | vmf |
709 | vma等于Target VMA |
714 | 如果非transhuge_vma_suitable(vma, haddr)则返回:VM_FAULT_FALLBACK |
716 | 如果此条件成立可能性小(为编译器优化)(anon_vma_prepare(vma))则返回:VM_FAULT_OOM |
718 | 如果此条件成立可能性小(为编译器优化)(khugepaged_enter(vma, Flags, see mm.h. ))则返回:VM_FAULT_OOM |
728 | 如果此条件成立可能性小(为编译器优化)(!pgtable)则返回:VM_FAULT_OOM |
731 | 如果此条件成立可能性小(为编译器优化)(!zero_page)则 |
733 | Disable counters |
734 | 返回:VM_FAULT_FALLBACK |
736 | Page table lock.* Protects pte page table if 'pte'* is not NULL, otherwise pmd.等于pmd_lock(The address space we belong to. , Pointer to pmd entry matching* the 'address' ) |
737 | ret等于0 |
738 | set = false |
739 | 如果pmd_none( * Pointer to pmd entry matching* the 'address' )则 |
741 | 如果ret则 |
742 | 自旋锁解锁 |
743 | 否则如果userfaultfd_missing(vma)则 |
744 | 自旋锁解锁 |
745 | ret等于handle_userfault(vmf, missing pages tracking ) |
746 | VM_BUG_ON(ret & VM_FAULT_FALLBACK) |
747 | 否则 |
753 | 否则自旋锁解锁 |
755 | 如果非set则pte_free - free PTE-level user page table page*@mm: the mm_struct of the current context*@pte_page: the `struct page` representing the page table |
757 | 返回:ret |
760 | page等于alloc_hugepage_vma(gfp, vma, haddr, HPAGE_PMD_ORDER) |
761 | 如果此条件成立可能性小(为编译器优化)(!page)则 |
762 | Disable counters |
763 | 返回:VM_FAULT_FALLBACK |
765 | prep_transhuge_page(page) |
766 | 返回:__do_huge_pmd_anonymous_page(vmf, page, gfp) |
名称 | 描述 |
---|---|
create_huge_pmd |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |