maps4: introduce a generic page walker
Introduce a general page table walker Signed-off-by: Matt Mackall <mpm@selenic.com> Cc: Dave Hansen <haveblue@us.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
698dd4ba6b
commit
e6473092bd
@ -718,6 +718,28 @@ unsigned long unmap_vmas(struct mmu_gather **tlb,
|
||||
struct vm_area_struct *start_vma, unsigned long start_addr,
|
||||
unsigned long end_addr, unsigned long *nr_accounted,
|
||||
struct zap_details *);
|
||||
|
||||
/**
|
||||
* mm_walk - callbacks for walk_page_range
|
||||
* @pgd_entry: if set, called for each non-empty PGD (top-level) entry
|
||||
* @pud_entry: if set, called for each non-empty PUD (2nd-level) entry
|
||||
* @pmd_entry: if set, called for each non-empty PMD (3rd-level) entry
|
||||
* @pte_entry: if set, called for each non-empty PTE (4th-level) entry
|
||||
* @pte_hole: if set, called for each hole at all levels
|
||||
*
|
||||
* (see walk_page_range for more details)
|
||||
*/
|
||||
struct mm_walk {
|
||||
int (*pgd_entry)(pgd_t *, unsigned long, unsigned long, void *);
|
||||
int (*pud_entry)(pud_t *, unsigned long, unsigned long, void *);
|
||||
int (*pmd_entry)(pmd_t *, unsigned long, unsigned long, void *);
|
||||
int (*pte_entry)(pte_t *, unsigned long, unsigned long, void *);
|
||||
int (*pte_hole)(unsigned long, unsigned long, void *);
|
||||
};
|
||||
|
||||
int walk_page_range(const struct mm_struct *, unsigned long addr,
|
||||
unsigned long end, const struct mm_walk *walk,
|
||||
void *private);
|
||||
void free_pgd_range(struct mmu_gather **tlb, unsigned long addr,
|
||||
unsigned long end, unsigned long floor, unsigned long ceiling);
|
||||
void free_pgtables(struct mmu_gather **tlb, struct vm_area_struct *start_vma,
|
||||
|
Reference in New Issue
Block a user