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