函数逻辑报告 |
Source Code:mm\userfaultfd.c |
Create Date:2022-07-27 18:08:55 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:mcopy_atomic_pte
函数原型:static int mcopy_atomic_pte(struct mm_struct *dst_mm, pmd_t *dst_pmd, struct vm_area_struct *dst_vma, unsigned long dst_addr, unsigned long src_addr, struct page **pagep)
返回类型:int
参数:
类型 | 参数 | 名称 |
---|---|---|
struct mm_struct * | dst_mm | |
pmd_t * | dst_pmd | |
struct vm_area_struct * | dst_vma | |
unsigned long | dst_addr | |
unsigned long | src_addr | |
struct page ** | pagep |
67 | 如果非pagep则 |
73 | page_kaddr等于kmap_atomic(page) |
74 | ret等于copy_from_user(page_kaddr, (constvoid__user * )src_addr, PAGE_SIZE) |
77 | Prevent people trying to call kunmap_atomic() as if it were kunmap()* kunmap_atomic() should get the return value of kmap_atomic, not the page.(page_kaddr) |
80 | 如果此条件成立可能性小(为编译器优化)(ret)则 |
86 | 否则 |
103 | 如果Flags, see mm.h. 按位与VM_WRITE则_dst_pte等于pte_mkwrite(pte_mkdirty(_dst_pte)) |
107 | 如果File we map to (can be NULL). 则 |
110 | offset等于linear_page_index(dst_vma, dst_addr) |
113 | 如果此条件成立可能性小(为编译器优化)(offset >= max_off)则转到:out_release_uncharge_unlock |
117 | 如果非pte_none( * dst_pte)则转到:out_release_uncharge_unlock |
120 | inc_mm_counter(dst_mm, MM_ANONPAGES) |
125 | set_pte_at(dst_mm, dst_addr, dst_pte, _dst_pte) |
130 | pte_unmap_unlock(dst_pte, ptl) |
131 | ret等于0 |
132 | out : |
133 | 返回:ret |
135 | pte_unmap_unlock(dst_pte, ptl) |
137 | out_release : |
139 | 转到:out |
名称 | 描述 |
---|---|
mfill_atomic_pte |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |