函数逻辑报告 |
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 |
注解内核,赢得工具 | 下载SCCT | English |
函数名称: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 | |
int | count | |
int | migratetype | |
int | flags |
8178 | iter等于0 |
8179 | pfn等于page_to_pfn(page) |
8180 | reason等于"unmovable page" |
8190 | 如果is_migrate_cma_page(page)则 |
8203 | 以iter小于pageblock_nr_pages循环 |
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)恒等于标记为虚拟内存域则继续下一循环 |
8228 | head等于compound_head(page) |
8231 | 如果非hugepage_migration_supported(page_hstate(head))则转到:unmovable |
8235 | iter加等于skip_pages减1 |
8236 | 继续下一循环 |
8245 | 如果非page_ref_count(page)则 |
8246 | 如果PageBuddy() indicates that the page is free and in the buddy system* (see mm/page_alloc.c).则iter加等于1左移page_order(page)位的值减1 |
8248 | 继续下一循环 |
8255 | 如果flags按位与MEMORY_OFFLINE且PageHWPoison(page)则继续下一循环 |
8258 | 如果__PageMovable(page)则继续下一循环 |
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_FAILURE则dump_page(pfn_to_page(pfn + iter), reason) |
8284 | 返回:true |
名称 | 描述 |
---|---|
set_migratetype_isolate |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |