函数逻辑报告 |
Source Code:mm\gup.c |
Create Date:2022-07-27 16:00:10 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:follow_pmd_mask
函数原型:static struct page *follow_pmd_mask(struct vm_area_struct *vma, unsigned long address, pud_t *pudp, unsigned int flags, struct follow_page_context *ctx)
返回类型:struct page
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| struct vm_area_struct * | vma | |
| unsigned long | address | |
| pud_t * | pudp | |
| unsigned int | flags | |
| struct follow_page_context * | ctx |
| 318 | pmd等于pmd_offset(pudp, address) |
| 324 | 如果pmd_none(pmdval)则返回:no_page_table(vma, flags) |
| 326 | 如果pmd_huge(pmdval)且Flags, see mm.h. 按位与Huge TLB Page VM 则 |
| 330 | 返回:no_page_table(vma, flags) |
| 338 | 返回:no_page_table(vma, flags) |
| 340 | retry : |
| 341 | 如果非pmd_present(pmdval)则 |
| 342 | 如果此条件成立可能性大(为编译器优化)(!(flags & wait for page to replace migration entry ))则返回:no_page_table(vma, flags) |
| 344 | VM_BUG_ON(thp_migration_supported() && !is_pmd_migration_entry(pmdval)) |
| 353 | 如果pmd_none(pmdval)则返回:no_page_table(vma, flags) |
| 355 | 转到:retry |
| 357 | 如果pmd_devmap(pmdval)则 |
| 360 | 自旋锁解锁 |
| 364 | 如果此条件成立可能性大(为编译器优化)(!pmd_trans_huge(pmdval))则返回:follow_page_pte(vma, address, pmd, flags, & pgmap) |
| 367 | 如果flags按位与rce NUMA hinting page fault 且pmd_protnone(pmdval)则返回:no_page_table(vma, flags) |
| 370 | retry_locked : |
| 372 | 如果此条件成立可能性小(为编译器优化)(pmd_none( * pmd))则 |
| 373 | 自旋锁解锁 |
| 374 | 返回:no_page_table(vma, flags) |
| 376 | 如果此条件成立可能性小(为编译器优化)(!pmd_present( * pmd))则 |
| 377 | 自旋锁解锁 |
| 378 | 如果此条件成立可能性大(为编译器优化)(!(flags & wait for page to replace migration entry ))则返回:no_page_table(vma, flags) |
| 380 | pmd_migration_entry_wait(mm, pmd) |
| 381 | 转到:retry_locked |
| 383 | 如果此条件成立可能性小(为编译器优化)(!pmd_trans_huge( * pmd))则 |
| 389 | page等于Currently stuck as a macro due to indirect forward reference to* linux/mmzone.h's __section_mem_map_addr() definition:( * pmd) |
| 390 | 如果is_huge_zero_page(page)则 |
| 396 | 否则如果flags按位与don't return transhuge pages, split them 则 |
| 397 | 如果此条件成立可能性小(为编译器优化)(!try_get_page(page))则 |
| 401 | 自旋锁解锁 |
| 403 | ret等于split_huge_page(page) |
| 406 | 如果pmd_none( * pmd)则返回:no_page_table(vma, flags) |
| 408 | 否则 |
| 418 | 自旋锁解锁 |
| 419 | page_mask等于HPAGE_PMD_NR减1 |
| 420 | 返回:page |
| 名称 | 描述 |
|---|---|
| follow_pud_mask |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |