Function report |
Source Code:mm\vmalloc.c |
Create Date:2022-07-28 14:58:06 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| home page | Tree |
| Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:Walk a vmap address to the struct page it maps.
Proto:struct page *vmalloc_to_page(const void *vmalloc_addr)
Type:struct page
Parameter:
| Type | Parameter | Name |
|---|---|---|
| const void * | vmalloc_addr |
| 271 | addr = vmalloc_addr |
| 285 | If The "pgd_xxx()" functions here are trivial for a folded two-level* setup: the p4d is never bad, and a p4d always exists (as it's folded* into the pgd entry) Then Return NULL |
| 287 | p4d = p4d_offset(pgd, addr) |
| 288 | If The "p4d_xxx()" functions here are trivial for a folded two-level* setup: the pud is never bad, and a pud always exists (as it's folded* into the p4d entry) Then Return NULL |
| 290 | pud = pud_offset(p4d, addr) |
| 300 | WARN_ON_ONCE(pud_bad( * pud)) |
| 301 | If The "pud_xxx()" functions here are trivial for a folded two-level* setup: the pmd is never bad, and a pmd always exists (as it's folded* into the pud entry) || pud_bad( * pud) Then Return NULL |
| 303 | pmd = pmd_offset(pud, addr) |
| 304 | WARN_ON_ONCE(pmd_bad( * pmd)) |
| 308 | ptep = pte_offset_map(pmd, addr) |
| 310 | If pte_present(pte) Then page = pte_page(pte) |
| 313 | Return page |
| Name | Describe |
|---|---|
| __text_poke | |
| relay_buf_fault | ault() vm_op implementation for relay file mapping. |
| vmalloc_to_pfn | Map a vmalloc()-space virtual address to the physical page frame number. |
| aligned_vread | small helper routine , copy contents to buf from addr.* If the page is not present, fill zero. |
| aligned_vwrite | |
| remap_vmalloc_range_partial | map_vmalloc_range_partial - map vmalloc pages to userspace*@vma: vma to cover*@uaddr: target user address to start at*@kaddr: virtual address of vmalloc kernel memory*@size: size of map area* Returns: 0 for success, -Exxx on failure* This function checks |
| swp_swapcount | How many references to @entry are currently swapped out?* This considers COUNT_CONTINUED so it returns exact answer. |
| add_swap_count_continuation | add_swap_count_continuation - called when a swap count is duplicated* beyond SWAP_MAP_MAX, it allocates a new page and links that to the entry's* page of the original vmalloc'ed swap_map, to hold the continuation count |
| swap_count_continued | swap_count_continued - when the original swap_map count is incremented* from SWAP_MAP_MAX, check if there is already a continuation page to carry* into, carry if so, or else fail until a new continuation page is allocated;* when the original swap_map |
| free_swap_count_continuations | _swap_count_continuations - swapoff free all the continuation pages* appended to the swap_map, after swap_map is quiesced, before vfree'ing it. |
| 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 |