函数逻辑报告 |
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 插件可实现:逻辑报告 代码生成和批量转换代码 |