函数逻辑报告 |
Source Code:mm\huge_memory.c |
Create Date:2022-07-27 17:37:09 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:__split_huge_page
函数原型:static void __split_huge_page(struct page *page, struct list_head *list, unsigned long end, unsigned long flags)
返回类型:void
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| struct page * | page | |
| struct list_head * | list | |
| unsigned long | end | |
| unsigned long | flags |
| 2502 | head等于compound_head(page) |
| 2503 | pgdat等于page_pgdat(head) |
| 2505 | struct address_space * swap_cache = NULL |
| 2506 | offset等于0 |
| 2509 | lruvec等于mem_cgroup_page_lruvec(head, pgdat) |
| 2514 | 如果PageAnon(head)且PageSwapCache(head)则 |
| 2515 | swp_entry_t entry = {val = page_private(head)} |
| 2517 | offset等于Extract the `offset' field from a swp_entry_t. The swp_entry_t is in* arch-independent format |
| 2518 | swap_cache等于swap_address_space(entry) |
| 2523 | __split_huge_page_tail(head, i, lruvec, list) |
| 2525 | 如果 Our offset within mapping. 大于等于end则 |
| 2526 | ClearPageDirty(head + i) |
| 2534 | 否则如果swap_cache则 |
| 2540 | ClearPageCompound(head) |
| 2542 | split_page_owner(head, HPAGE_PMD_ORDER) |
| 2553 | 否则 |
| 2555 | page_ref_add(head, 2) |
| 2561 | remap_page(head) |
| 2563 | 以i小于HPAGE_PMD_NR循环 |
| 名称 | 描述 |
|---|---|
| split_huge_page_to_list | This function splits huge page into normal pages. @page can point to any* subpage of huge page to split. Split doesn't change the position of @page.* Only caller must hold pin on the @page, otherwise split fails with -EBUSY.* The huge page must be locked. |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |