| Function report | 
| Source Code: mm\huge_memory.c | Create Date:2022-07-28 16:03:00 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:__split_huge_page
Proto:static void __split_huge_page(struct page *page, struct list_head *list, unsigned long end, unsigned long flags)
Type:void
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| 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 | If PageAnon(head) && PageSwapCache(head) Then | 
| 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 | If Our offset within mapping. >= end Then | 
| 2526 | ClearPageDirty(head + i) | 
| 2534 | Else if swap_cache Then | 
| 2540 | ClearPageCompound(head) | 
| 2542 | split_page_owner(head, HPAGE_PMD_ORDER) | 
| 2553 | Else | 
| 2555 | page_ref_add(head, 2) | 
| 2561 | remap_page(head) | 
| 2563 | When i < HPAGE_PMD_NR cycle | 
| Name | Describe | 
|---|---|
| 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. | 
| Source code conversion tool public plug-in interface | X | 
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |