Function report |
Source Code:mm\memory.c |
Create Date:2022-07-28 14:43:21 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| home page | Tree |
| Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:do_numa_page
Proto:static vm_fault_t do_numa_page(struct vm_fault *vmf)
Type:vm_fault_t
Parameter:
| Type | Parameter | Name |
|---|---|---|
| struct vm_fault * | vmf |
| 3816 | vma = Target VMA |
| 3818 | page_nid = NUMA_NO_NODE |
| 3821 | bool migrated = false |
| 3824 | flags = 0 |
| 3831 | Page table lock.* Protects pte page table if 'pte'* is not NULL, otherwise pmd. = pte_lockptr(The address space we belong to. , Pointer to pmd entry matching* the 'address' ) |
| 3834 | pte_unmap_unlock(Pointer to pte entry matching* the 'address'. NULL if the page* table hasn't been allocated., Page table lock.* Protects pte page table if 'pte'* is not NULL, otherwise pmd.) |
| 3835 | Go to out |
| 3842 | old_pte = Start a pte protection read-modify-write transaction, which* protects against asynchronous hardware modifications to the pte |
| 3843 | pte = pte_modify(old_pte, Access permissions of this VMA. ) |
| 3844 | pte = pte_mkyoung(pte) |
| 3845 | If was_writable Then pte = pte_mkwrite(pte) |
| 3851 | If Not page Then |
| 3852 | pte_unmap_unlock(Pointer to pte entry matching* the 'address'. NULL if the page* table hasn't been allocated., Page table lock.* Protects pte page table if 'pte'* is not NULL, otherwise pmd.) |
| 3853 | Return 0 |
| 3857 | If PageCompound(page) Then |
| 3858 | pte_unmap_unlock(Pointer to pte entry matching* the 'address'. NULL if the page* table hasn't been allocated., Page table lock.* Protects pte page table if 'pte'* is not NULL, otherwise pmd.) |
| 3859 | Return 0 |
| 3870 | If Not pte_write(pte) Then flags |= TNF_NO_GROUP |
| 3877 | If page_mapcount(page) > 1 && Flags, see mm.h. & VM_SHARED Then flags |= TNF_SHARED |
| 3880 | last_cpupid = page_cpupid_last(page) |
| 3881 | page_nid = page_to_nid(page) |
| 3882 | target_nid = numa_migrate_prep(page, vma, Faulting virtual address , page_nid, & flags) |
| 3884 | pte_unmap_unlock(Pointer to pte entry matching* the 'address'. NULL if the page* table hasn't been allocated., Page table lock.* Protects pte page table if 'pte'* is not NULL, otherwise pmd.) |
| 3885 | If target_nid == NUMA_NO_NODE Then |
| 3891 | migrated = migrate_misplaced_page(page, vma, target_nid) |
| 3892 | If migrated Then |
| 3893 | page_nid = target_nid |
| 3894 | flags |= TNF_MIGRATED |
| 3895 | Else flags |= TNF_MIGRATE_FAIL |
| 3898 | out : |
| 3899 | If page_nid != NUMA_NO_NODE Then task_numa_fault(last_cpupid, page_nid, 1, flags) |
| 3901 | Return 0 |
| Name | Describe |
|---|---|
| handle_pte_fault | These routines also need to handle stuff like marking pages dirty* and/or accessed for architectures that don't do it in hardware (most* RISC architectures) |
| 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 |