Function report |
Source Code:mm\huge_memory.c |
Create Date:2022-07-28 16:02:18 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| home page | Tree |
| Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:move_huge_pmd
Proto:bool move_huge_pmd(struct vm_area_struct *vma, unsigned long old_addr, unsigned long new_addr, unsigned long old_end, pmd_t *old_pmd, pmd_t *new_pmd)
Type:bool
Parameter:
| Type | Parameter | Name |
|---|---|---|
| struct vm_area_struct * | vma | |
| unsigned long | old_addr | |
| unsigned long | new_addr | |
| unsigned long | old_end | |
| pmd_t * | old_pmd | |
| pmd_t * | new_pmd |
| 1872 | bool force_flush = false |
| 1874 | If old_addr & ~HPAGE_PMD_MASK || new_addr & ~HPAGE_PMD_MASK || old_end - old_addr < HPAGE_PMD_SIZE Then Return false |
| 1884 | VM_BUG_ON(pmd_trans_huge( * new_pmd)) |
| 1885 | Return false |
| 1893 | If old_ptl Then |
| 1894 | new_ptl = pmd_lockptr(mm, new_pmd) |
| 1897 | pmd = pmdp_huge_get_and_clear(mm, old_addr, old_pmd) |
| 1898 | If pmd_present(pmd) Then force_flush = true |
| 1902 | If pmd_move_must_withdraw(new_ptl, old_ptl, vma) Then |
| 1905 | pgtable_trans_huge_deposit(mm, new_pmd, pgtable) |
| 1907 | pmd = move_soft_dirty_pmd(pmd) |
| 1908 | set_pmd_at(mm, new_addr, new_pmd, pmd) |
| 1909 | If force_flush Then flush_tlb_range(vma, old_addr, old_addr + PMD_SIZE) |
| 1911 | If new_ptl != old_ptl Then spin_unlock(new_ptl) |
| 1913 | spin_unlock(old_ptl) |
| 1914 | Return true |
| 1916 | Return false |
| 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 |