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