函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:mm\huge_memory.c Create Date:2022-07-27 17:36:51
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:__split_huge_pmd

函数原型:void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, unsigned long address, bool freeze, struct page *page)

返回类型:void

参数:

类型参数名称
struct vm_area_struct *vma
pmd_t *pmd
unsigned longaddress
boolfreeze
struct page *page
2306  mmu_notifier_range_init( & range, MMU_NOTIFY_CLEAR, 0, vma, The address space we belong to. , address & HPAGE_PMD_MASK, (address & HPAGE_PMD_MASK) + HPAGE_PMD_SIZE)
2309  mmu_notifier_invalidate_range_start( & range)
2310  ptl等于pmd_lock(The address space we belong to. , pmd)
2316  VM_BUG_ON(freeze && !page)
2317  如果pagepage不等于Currently stuck as a macro due to indirect forward reference to* linux/mmzone.h's __section_mem_map_addr() definition:( * pmd)则转到:out
2320  如果pmd_trans_huge( * pmd)则
2321  page等于Currently stuck as a macro due to indirect forward reference to* linux/mmzone.h's __section_mem_map_addr() definition:( * pmd)
2322  如果PageMlocked(page)则LRU accounting for clear_page_mlock()
2324  否则如果非pmd_devmap( * pmd)或is_pmd_migration_entry( * pmd)的值则转到:out
2326  __split_huge_pmd_locked(vma, pmd, start, freeze)
2327  out :
2328  自旋锁解锁
2342  mmu_notifier_invalidate_range_only_end( & range)
调用者
名称描述
wp_huge_pmd`inline' is required to avoid gcc 4.1.2 build error
change_pmd_range
queue_pages_pmdqueue_pages_pmd() has four possible return values:* 0 - pages are placed on the right node or queued successfully
split_huge_pmd_address
zap_pmd_range