函数逻辑报告 |
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 插件可实现:逻辑报告 代码生成和批量转换代码 |