aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mm.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/mm.h')
-rw-r--r--include/linux/mm.h25
1 files changed, 15 insertions, 10 deletions
diff --git a/include/linux/mm.h b/include/linux/mm.h
index c31a9cd2a30e..2128ef7780c6 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -108,6 +108,7 @@ extern unsigned int kobjsize(const void *objp);
108 108
109#define VM_CAN_NONLINEAR 0x08000000 /* Has ->fault & does nonlinear pages */ 109#define VM_CAN_NONLINEAR 0x08000000 /* Has ->fault & does nonlinear pages */
110#define VM_MIXEDMAP 0x10000000 /* Can contain "struct page" and pure PFN pages */ 110#define VM_MIXEDMAP 0x10000000 /* Can contain "struct page" and pure PFN pages */
111#define VM_SAO 0x20000000 /* Strong Access Ordering (powerpc) */
111 112
112#ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */ 113#ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */
113#define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS 114#define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS
@@ -760,16 +761,17 @@ unsigned long unmap_vmas(struct mmu_gather **tlb,
760 * (see walk_page_range for more details) 761 * (see walk_page_range for more details)
761 */ 762 */
762struct mm_walk { 763struct mm_walk {
763 int (*pgd_entry)(pgd_t *, unsigned long, unsigned long, void *); 764 int (*pgd_entry)(pgd_t *, unsigned long, unsigned long, struct mm_walk *);
764 int (*pud_entry)(pud_t *, unsigned long, unsigned long, void *); 765 int (*pud_entry)(pud_t *, unsigned long, unsigned long, struct mm_walk *);
765 int (*pmd_entry)(pmd_t *, unsigned long, unsigned long, void *); 766 int (*pmd_entry)(pmd_t *, unsigned long, unsigned long, struct mm_walk *);
766 int (*pte_entry)(pte_t *, unsigned long, unsigned long, void *); 767 int (*pte_entry)(pte_t *, unsigned long, unsigned long, struct mm_walk *);
767 int (*pte_hole)(unsigned long, unsigned long, void *); 768 int (*pte_hole)(unsigned long, unsigned long, struct mm_walk *);
769 struct mm_struct *mm;
770 void *private;
768}; 771};
769 772
770int walk_page_range(const struct mm_struct *, unsigned long addr, 773int walk_page_range(unsigned long addr, unsigned long end,
771 unsigned long end, const struct mm_walk *walk, 774 struct mm_walk *walk);
772 void *private);
773void free_pgd_range(struct mmu_gather **tlb, unsigned long addr, 775void free_pgd_range(struct mmu_gather **tlb, unsigned long addr,
774 unsigned long end, unsigned long floor, unsigned long ceiling); 776 unsigned long end, unsigned long floor, unsigned long ceiling);
775void free_pgtables(struct mmu_gather **tlb, struct vm_area_struct *start_vma, 777void free_pgtables(struct mmu_gather **tlb, struct vm_area_struct *start_vma,
@@ -997,8 +999,8 @@ extern void free_area_init_node(int nid, pg_data_t *pgdat,
997extern void free_area_init_nodes(unsigned long *max_zone_pfn); 999extern void free_area_init_nodes(unsigned long *max_zone_pfn);
998extern void add_active_range(unsigned int nid, unsigned long start_pfn, 1000extern void add_active_range(unsigned int nid, unsigned long start_pfn,
999 unsigned long end_pfn); 1001 unsigned long end_pfn);
1000extern void shrink_active_range(unsigned int nid, unsigned long old_end_pfn, 1002extern void remove_active_range(unsigned int nid, unsigned long start_pfn,
1001 unsigned long new_end_pfn); 1003 unsigned long end_pfn);
1002extern void push_node_boundaries(unsigned int nid, unsigned long start_pfn, 1004extern void push_node_boundaries(unsigned int nid, unsigned long start_pfn,
1003 unsigned long end_pfn); 1005 unsigned long end_pfn);
1004extern void remove_all_active_ranges(void); 1006extern void remove_all_active_ranges(void);
@@ -1010,6 +1012,8 @@ extern unsigned long find_min_pfn_with_active_regions(void);
1010extern unsigned long find_max_pfn_with_active_regions(void); 1012extern unsigned long find_max_pfn_with_active_regions(void);
1011extern void free_bootmem_with_active_regions(int nid, 1013extern void free_bootmem_with_active_regions(int nid,
1012 unsigned long max_low_pfn); 1014 unsigned long max_low_pfn);
1015typedef int (*work_fn_t)(unsigned long, unsigned long, void *);
1016extern void work_with_active_regions(int nid, work_fn_t work_fn, void *data);
1013extern void sparse_memory_present_with_active_regions(int nid); 1017extern void sparse_memory_present_with_active_regions(int nid);
1014#ifndef CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID 1018#ifndef CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
1015extern int early_pfn_to_nid(unsigned long pfn); 1019extern int early_pfn_to_nid(unsigned long pfn);
@@ -1023,6 +1027,7 @@ extern void mem_init(void);
1023extern void show_mem(void); 1027extern void show_mem(void);
1024extern void si_meminfo(struct sysinfo * val); 1028extern void si_meminfo(struct sysinfo * val);
1025extern void si_meminfo_node(struct sysinfo *val, int nid); 1029extern void si_meminfo_node(struct sysinfo *val, int nid);
1030extern int after_bootmem;
1026 1031
1027#ifdef CONFIG_NUMA 1032#ifdef CONFIG_NUMA
1028extern void setup_per_cpu_pageset(void); 1033extern void setup_per_cpu_pageset(void);