函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:This function checks whether pageblock includes unmovable pages or not.* If @count is not zero, it is okay to include less @count unmovable pages* PageLRU check without isolation or lru_lock could race so that

函数原型:bool has_unmovable_pages(struct zone *zone, struct page *page, int count, int migratetype, int flags)

返回类型:bool

参数:

类型参数名称
struct zone *zone
struct page *page
intcount
intmigratetype
intflags
8178  iter等于0
8179  pfn等于page_to_pfn(page)
8180  reason等于"unmovable page"
8190  如果is_migrate_cma_page(page)则
8196  如果is_migrate_cma(migratetype)则返回:false
8199  reason等于"CMA page"
8200  转到:unmovable
8203 iter小于pageblock_nr_pages循环
8204  check等于pfniter
8206  如果非pfn_valid_within(check)则继续下一循环
8209  page等于pfn_to_page(check)
8211  如果PageReserved(page)则转到:unmovable
8219  如果zone_idx() returns 0 for the ZONE_DMA zone, 1 for the ZONE_NORMAL zone, etc.(zone)恒等于标记为虚拟内存域则继续下一循环
8227  如果PageHuge(page)则
8228  head等于compound_head(page)
8235  iter加等于skip_pages减1
8236  继续下一循环
8245  如果非page_ref_count(page)则
8248  继续下一循环
8255  如果flags按位与MEMORY_OFFLINEPageHWPoison(page)则继续下一循环
8258  如果__PageMovable(page)则继续下一循环
8261  如果非PageLRU(page)则found自加
8276  如果found大于count则转到:unmovable
8279  返回:false
8280  unmovable :
8281  WARN_ON_ONCE(zone_idx() returns 0 for the ZONE_DMA zone, 1 for the ZONE_NORMAL zone, etc.(zone) == 标记为虚拟内存域)
8282  如果flags按位与REPORT_FAILUREdump_page(pfn_to_page(pfn + iter), reason)
8284  返回:true
调用者
名称描述
set_migratetype_isolate