函数逻辑报告 |
Source Code:mm\hugetlb.c |
Create Date:2022-07-27 17:00:10 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:copy_hugetlb_page_range
函数原型:int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src, struct vm_area_struct *vma)
返回类型:int
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| struct mm_struct * | dst | |
| struct mm_struct * | src | |
| struct vm_area_struct * | vma |
| 3307 | h等于hstate_vma(vma) |
| 3308 | sz等于huge_page_size(h) |
| 3310 | ret等于0 |
| 3312 | cow等于Flags, see mm.h. 按位与VM_SHARED按位或VM_MAYWRITE的值的值恒等于VM_MAYWRITE |
| 3314 | 如果cow则 |
| 3315 | mmu_notifier_range_init( & range, MMU_NOTIFY_CLEAR, 0, vma, src, Our start address within vm_mm. , The first byte after our end addresswithin vm_mm. ) |
| 3318 | mmu_notifier_invalidate_range_start( & range) |
| 3323 | src_pte等于huge_pte_offset(src, addr, sz) |
| 3324 | 如果非src_pte则继续下一循环 |
| 3326 | dst_pte等于arch callbacks |
| 3327 | 如果非dst_pte则 |
| 3341 | dst_entry等于huge_ptep_get(dst_pte) |
| 3342 | 如果dst_pte恒等于src_pte或非huge_pte_none(dst_entry)则继续下一循环 |
| 3345 | dst_ptl等于huge_pte_lock(h, dst, dst_pte) |
| 3346 | src_ptl等于huge_pte_lockptr(h, src, src_pte) |
| 3348 | entry等于huge_ptep_get(src_pte) |
| 3349 | dst_entry等于huge_ptep_get(dst_pte) |
| 3359 | swp_entry等于Convert the arch-dependent pte representation of a swp_entry_t into an* arch-independent swp_entry_t. |
| 3361 | 如果is_write_migration_entry(swp_entry)且cow则 |
| 3372 | 否则 |
| 3373 | 如果cow则 |
| 3381 | huge_ptep_set_wrprotect(src, addr, src_pte) |
| 3383 | entry等于huge_ptep_get(src_pte) |
| 3386 | page_dup_rmap(ptepage, true) |
| 3387 | set_huge_pte_at(dst, addr, dst_pte, entry) |
| 3388 | hugetlb_count_add(pages_per_huge_page(h), dst) |
| 3390 | 自旋锁解锁 |
| 3391 | 自旋锁解锁 |
| 3394 | 如果cow则mmu_notifier_invalidate_range_end( & range) |
| 3397 | 返回:ret |
| 名称 | 描述 |
|---|---|
| copy_page_range |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |