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