函数逻辑报告 |
Source Code:mm\huge_memory.c |
Create Date:2022-07-27 17:36:01 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:follow_trans_huge_pmd
函数原型:struct page *follow_trans_huge_pmd(struct vm_area_struct *vma, unsigned long addr, pmd_t *pmd, unsigned int flags)
返回类型:struct page
参数:
类型 | 参数 | 名称 |
---|---|---|
struct vm_area_struct * | vma | |
unsigned long | addr | |
pmd_t * | pmd | |
unsigned int | flags |
1474 | assert_spin_locked(pmd_lockptr(mm, pmd)) |
1476 | 如果flags按位与check pte is writable 且非FOLL_FORCE can write to even unwritable pmd's, but only* after we've gone through a COW cycle and they are dirty.则转到:out |
1480 | 如果flags按位与give error on hole if it would be zero 且is_huge_zero_pmd( * pmd)则返回:错误号 |
1484 | 如果flags按位与rce NUMA hinting page fault 且pmd_protnone( * pmd)则转到:out |
1487 | page等于Currently stuck as a macro due to indirect forward reference to* linux/mmzone.h's __section_mem_map_addr() definition:( * pmd) |
1488 | VM_BUG_ON_PAGE(!PageHead(page) && !is_zone_device_page(page), page) |
1491 | 如果flags按位与lock present pages 且Flags, see mm.h. 按位与VM_LOCKED则 |
1513 | 如果PageAnon(page)且compound_mapcount(page)不等于1则转到:skip_mlock |
1519 | lru_add_drain() |
1524 | skip_mlock : |
1525 | page加等于addr按位与HPAGE_PMD_MASK的反的值右移PAGE_SHIFT determines the page size 位 |
1526 | VM_BUG_ON_PAGE(!PageCompound(page) && !is_zone_device_page(page), page) |
1527 | 如果flags按位与do get_page on page 则get_page(page) |
1530 | out : |
1531 | 返回:page |
名称 | 描述 |
---|---|
follow_pmd_mask |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |