函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:mm\memory.c Create Date:2022-07-27 16:10:25
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:do_cow_fault

函数原型:static vm_fault_t do_cow_fault(struct vm_fault *vmf)

返回类型:vm_fault_t

参数:

类型参数名称
struct vm_fault *vmf
3669  vma等于Target VMA
3672  如果此条件成立可能性小(为编译器优化)(anon_vma_prepare(vma))则返回:VM_FAULT_OOM
3675  Page handler may use for COW fault 等于alloc_page_vma(GFP_HIGHUSER_MOVABLE, vma, Faulting virtual address )
3676  如果非Page handler may use for COW fault 则返回:VM_FAULT_OOM
3679  如果mem_cgroup_try_charge_delay(Page handler may use for COW fault , The address space we belong to. , GFP_KERNEL, & Cgroup cow_page belongs to , false)则
3681  put_page(Page handler may use for COW fault )
3682  返回:VM_FAULT_OOM
3685  ret等于The mmap_sem must have been held on entry, and may have been* released depending on flags and vma->vm_ops->fault() return value.* See filemap_fault() and __lock_page_retry().
3686  如果此条件成立可能性小(为编译器优化)(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE | VM_FAULT_RETRY))则转到:uncharge_out
3688  如果ret按位与VM_FAULT_DONE_COW则返回:ret
3691  copy_user_highpage(Page handler may use for COW fault , ->fault handlers should return a* page here, unless VM_FAULT_NOPAGE* is set (which is also implied by* VM_FAULT_ERROR)., Faulting virtual address , vma)
3692  __SetPageUptodate(Page handler may use for COW fault )
3694  ret或等于sh_fault - finish page fault once we have prepared the page to fault*@vmf: structure describing the fault* This function handles all that is needed to finish a page fault once the* page to fault in is prepared
3695  lock_page - unlock a locked page*@page: the page* Unlocks the page and wakes up sleepers in ___wait_on_page_locked().* Also wakes sleepers in wait_on_page_writeback() because the wakeup* mechanism between PageLocked pages and PageWriteback pages is shared.
3696  put_page(->fault handlers should return a* page here, unless VM_FAULT_NOPAGE* is set (which is also implied by* VM_FAULT_ERROR).)
3697  如果此条件成立可能性小(为编译器优化)(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE | VM_FAULT_RETRY))则转到:uncharge_out
3699  返回:ret
3700  uncharge_out :
3701  mem_cgroup_cancel_charge(Page handler may use for COW fault , Cgroup cow_page belongs to , false)
3702  put_page(Page handler may use for COW fault )
3703  返回:ret
调用者
名称描述
do_faultWe enter with non-exclusive mmap_sem (to exclude vma changes,* but allow concurrent faults)