| Function report | 
| Source Code: mm\hmm.c | Create Date:2022-07-28 16:37:22 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:hmm_vma_walk_pmd
Proto:static int hmm_vma_walk_pmd(pmd_t *pmdp, unsigned long start, unsigned long end, struct mm_walk *walk)
Type:int
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| pmd_t * | pmdp | |
| unsigned long | start | |
| unsigned long | end | |
| struct mm_walk * | walk | 
| 373 | hmm_vma_walk = private | 
| 380 | again : | 
| 385 | If thp_migration_supported() && is_pmd_migration_entry(pmd) Then | 
| 390 | i = addr - start >> PAGE_SHIFT determines the page size | 
| 391 | npages = end - addr >> PAGE_SHIFT determines the page size | 
| 394 | hmm_range_need_fault(hmm_vma_walk, pfns, npages, 0, & fault, & write_fault) | 
| 396 | If fault || write_fault Then | 
| 401 | Return 0 | 
| 402 | Else if Not pmd_present(pmd) Then Return hmm_pfns_fill(start, end, range, corresponding CPU page table entry points to poisoned memory) | 
| 405 | If pmd_devmap(pmd) || pmd_trans_huge(pmd) Then | 
| 415 | pmd = pmd_read_atomic(pmdp) | 
| 417 | If Not pmd_devmap(pmd) && Not pmd_trans_huge(pmd) Then Go to again | 
| 420 | i = addr - start >> PAGE_SHIFT determines the page size | 
| 430 | If pmd_bad(pmd) Then Return hmm_pfns_fill(start, end, range, corresponding CPU page table entry points to poisoned memory) | 
| 433 | ptep = pte_offset_map(pmdp, addr) | 
| 434 | i = addr - start >> PAGE_SHIFT determines the page size | 
| 439 | If r Then | 
| 445 | If pgmap Then | 
| 452 | put_dev_pagemap(pgmap) | 
| 453 | pgmap = NULL | 
| 458 | Return 0 | 
| Source code conversion tool public plug-in interface | X | 
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |