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