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 |