函数逻辑报告 |
Source Code:mm\huge_memory.c |
Create Date:2022-07-27 17:36:27 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:move_huge_pmd
函数原型: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)
返回类型:bool
参数:
类型 | 参数 | 名称 |
---|---|---|
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 | 如果old_addr按位与HPAGE_PMD_MASK的反或new_addr按位与HPAGE_PMD_MASK的反或old_end减old_addr小于HPAGE_PMD_SIZE则返回:false |
1884 | VM_BUG_ON(pmd_trans_huge( * new_pmd)) |
1885 | 返回:false |
1893 | 如果old_ptl则 |
1894 | new_ptl等于pmd_lockptr(mm, new_pmd) |
1897 | pmd等于pmdp_huge_get_and_clear(mm, old_addr, old_pmd) |
1898 | 如果pmd_present(pmd)则force_flush = true |
1902 | 如果pmd_move_must_withdraw(new_ptl, old_ptl, vma)则 |
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 | 如果force_flush则flush_tlb_range(vma, old_addr, old_addr + PMD_SIZE) |
1913 | 自旋锁解锁 |
1914 | 返回:true |
1916 | 返回:false |
名称 | 描述 |
---|---|
move_page_tables |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |