| 函数逻辑报告 | 
| Source Code: mm\huge_memory.c | Create Date:2022-07-27 17:35:01 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| 首页 | 函数Tree | 
| 注解内核,赢得工具 | 下载SCCT | English | 
函数名称:__do_huge_pmd_anonymous_page
函数原型:static vm_fault_t __do_huge_pmd_anonymous_page(struct vm_fault *vmf, struct page *page, gfp_t gfp)
返回类型:vm_fault_t
参数:
| 类型 | 参数 | 名称 | 
|---|---|---|
| struct vm_fault * | vmf | |
| struct page * | page | |
| gfp_t | gfp | 
| 578 | vma等于Target VMA | 
| 582 | ret等于0 | 
| 584 | VM_BUG_ON_PAGE(!PageCompound(page), page) | 
| 586 | 如果mem_cgroup_try_charge_delay(page, The address space we belong to. , gfp, & memcg, true)则 | 
| 588 | Disable counters | 
| 589 | 返回:VM_FAULT_FALLBACK | 
| 593 | 如果此条件成立可能性小(为编译器优化)(!pgtable)则 | 
| 594 | ret等于VM_FAULT_OOM | 
| 595 | 转到:release | 
| 604 | __SetPageUptodate(page) | 
| 606 | 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' ) | 
| 608 | 转到:unlock_release | 
| 609 | 否则 | 
| 613 | 如果ret则转到:unlock_release | 
| 617 | 如果userfaultfd_missing(vma)则 | 
| 620 | 自旋锁解锁 | 
| 621 | mem_cgroup_cancel_charge(page, memcg, true) | 
| 625 | VM_BUG_ON(ret2 & VM_FAULT_FALLBACK) | 
| 626 | 返回:ret2 | 
| 630 | entry等于maybe_pmd_mkwrite(pmd_mkdirty(entry), vma) | 
| 632 | mem_cgroup_commit_charge(page, memcg, TSC's on different sockets may be reset asynchronously.* This may cause the TSC ADJUST value on socket 0 to be NOT 0., true) | 
| 634 | pgtable_trans_huge_deposit(The address space we belong to. , Pointer to pmd entry matching* the 'address' , pgtable) | 
| 635 | set_pmd_at(The address space we belong to. , haddr, Pointer to pmd entry matching* the 'address' , entry) | 
| 638 | 自旋锁解锁 | 
| 639 | Disable counters | 
| 640 | count_memcg_events(memcg, THP_FAULT_ALLOC, 1) | 
| 643 | 返回:0 | 
| 644 | unlock_release : | 
| 645 | 自旋锁解锁 | 
| 646 | release : | 
| 647 | 如果pgtable则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 | 
| 649 | mem_cgroup_cancel_charge(page, memcg, true) | 
| 651 | 返回:ret | 
| 名称 | 描述 | 
|---|---|
| do_huge_pmd_anonymous_page | 
| 源代码转换工具 开放的插件接口 | X | 
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |