| 函数逻辑报告 | 
| Source Code: mm\page_vma_mapped.c | Create Date:2022-07-27 16:23:24 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| 首页 | 函数Tree | 
| 注解内核,赢得工具 | 下载SCCT | English | 
函数名称:page_vma_mapped_walk - check if @pvmw->page is mapped in @pvmw->vma at*@pvmw->address*@pvmw: pointer to struct page_vma_mapped_walk. page, vma, address and flags* must be set. pmd, pte and ptl must be NULL.* Returns true if the page is mapped in the vma
函数原型:bool page_vma_mapped_walk(struct page_vma_mapped_walk *pvmw)
返回类型:bool
参数:
| 类型 | 参数 | 名称 | 
|---|---|---|
| struct page_vma_mapped_walk * | pvmw | 
| 154 | 如果此条件成立可能性小(为编译器优化)(PageHuge(page))则 | 
| 156 | pte等于huge_pte_offset(mm, address, Returns the number of bytes in this potentially compound page. ) | 
| 157 | 如果非pte则返回:false | 
| 160 | ptl等于huge_pte_lockptr(page_hstate(page), mm, pte) | 
| 161 | 加自旋锁 | 
| 162 | 如果非heck_pte - check if @pvmw->page is mapped at the @pvmw->pte* page_vma_mapped_walk() found a place where @pvmw->page is *potentially** mapped则返回:not_found(pvmw) | 
| 164 | 返回:true | 
| 166 | restart : | 
| 168 | 如果非pgd_present( * pgd)则返回:false | 
| 170 | p4d等于p4d_offset(pgd, address) | 
| 171 | 如果非p4d_present( * p4d)则返回:false | 
| 173 | pud等于pud_offset(p4d, address) | 
| 174 | 如果非pud_present( * pud)则返回:false | 
| 176 | pmd等于pmd_offset(pud, address) | 
| 183 | 如果pmd_trans_huge(pmde)或is_pmd_migration_entry(pmde)则 | 
| 185 | 如果此条件成立可能性大(为编译器优化)(pmd_trans_huge( * pmd))则 | 
| 188 | 如果Currently stuck as a macro due to indirect forward reference to* linux/mmzone.h's __section_mem_map_addr() definition:( * pmd)不等于page则返回:not_found(pvmw) | 
| 190 | 返回:true | 
| 191 | 否则如果非pmd_present( * pmd)则 | 
| 192 | 如果thp_migration_supported()则 | 
| 193 | 如果非flags按位与Look for migarion entries rather than present PTEs 的值则返回:not_found(pvmw) | 
| 195 | 如果is_migration_entry(pmd_to_swp_entry( * pmd))则 | 
| 196 | entry等于pmd_to_swp_entry( * pmd) | 
| 198 | 如果migration_entry_to_page(entry)不等于page则返回:not_found(pvmw) | 
| 200 | 返回:true | 
| 204 | 否则 | 
| 209 | 否则如果非pmd_present(pmde)则 | 
| 210 | 返回:false | 
| 214 | 当1循环 | 
| 217 | next_pte : | 
| 221 | 循环 | 
| 223 | 如果address大于等于The first byte after our end addresswithin vm_mm. 或address大于等于At what user virtual address is page expected in @vma?加hpage_nr_pages(page)乘PAGE_SIZE则返回:not_found(pvmw) | 
| 236 | 否则 | 
| 237 | pte自加 | 
| 241 | 如果非ptl则 | 
| 242 | ptl等于pte_lockptr(mm, pmd) | 
| 243 | 加自旋锁 | 
| 名称 | 描述 | 
|---|---|
| page_mapped_in_vma | page_mapped_in_vma - check whether a page is really mapped in a VMA*@page: the page to test*@vma: the VMA to test* Returns 1 if the page is mapped into the page tables of the VMA, 0* if the page is not mapped into the page tables of this VMA. Only | 
| page_referenced_one | |
| page_mkclean_one | |
| try_to_unmap_one | @arg: enum ttu_flags will be passed to this argument | 
| write_protect_page | |
| remove_migration_pte | Restore a potential migration pte to a working pte entry | 
| page_idle_clear_pte_refs_one | |
| __replace_page | __replace_page - replace page in vma by new page | 
| 源代码转换工具 开放的插件接口 | X | 
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |