]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - include/linux/mm.h
mm/memory_hotplug: export generic_online_page()
[linux.git] / include / linux / mm.h
index a2adf95b3f9c5e1e026a3d1db1cb7136c992ca83..19a0e687878a48fb7970f3ccf3207f9a7865d5a8 100644 (file)
@@ -564,21 +564,6 @@ int vma_is_stack_for_current(struct vm_area_struct *vma);
 struct mmu_gather;
 struct inode;
 
-#if !defined(CONFIG_ARCH_HAS_PTE_DEVMAP) || !defined(CONFIG_TRANSPARENT_HUGEPAGE)
-static inline int pmd_devmap(pmd_t pmd)
-{
-       return 0;
-}
-static inline int pud_devmap(pud_t pud)
-{
-       return 0;
-}
-static inline int pgd_devmap(pgd_t pgd)
-{
-       return 0;
-}
-#endif
-
 /*
  * FIXME: take this include out, include page-flags.h in
  * files which need it (119 of them)
@@ -1643,19 +1628,27 @@ static inline unsigned long get_mm_counter(struct mm_struct *mm, int member)
        return (unsigned long)val;
 }
 
+void mm_trace_rss_stat(struct mm_struct *mm, int member, long count);
+
 static inline void add_mm_counter(struct mm_struct *mm, int member, long value)
 {
-       atomic_long_add(value, &mm->rss_stat.count[member]);
+       long count = atomic_long_add_return(value, &mm->rss_stat.count[member]);
+
+       mm_trace_rss_stat(mm, member, count);
 }
 
 static inline void inc_mm_counter(struct mm_struct *mm, int member)
 {
-       atomic_long_inc(&mm->rss_stat.count[member]);
+       long count = atomic_long_inc_return(&mm->rss_stat.count[member]);
+
+       mm_trace_rss_stat(mm, member, count);
 }
 
 static inline void dec_mm_counter(struct mm_struct *mm, int member)
 {
-       atomic_long_dec(&mm->rss_stat.count[member]);
+       long count = atomic_long_dec_return(&mm->rss_stat.count[member]);
+
+       mm_trace_rss_stat(mm, member, count);
 }
 
 /* Optimized variant when page is already known not to be PageAnon */
@@ -2632,7 +2625,6 @@ typedef int (*pte_fn_t)(pte_t *pte, unsigned long addr, void *data);
 extern int apply_to_page_range(struct mm_struct *mm, unsigned long address,
                               unsigned long size, pte_fn_t fn, void *data);
 
-
 #ifdef CONFIG_PAGE_POISONING
 extern bool page_poisoning_enabled(void);
 extern void kernel_poison_pages(struct page *page, int numpages, int enable);
@@ -2781,7 +2773,7 @@ extern int sysctl_memory_failure_early_kill;
 extern int sysctl_memory_failure_recovery;
 extern void shake_page(struct page *p, int access);
 extern atomic_long_t num_poisoned_pages __read_mostly;
-extern int soft_offline_page(struct page *page, int flags);
+extern int soft_offline_page(unsigned long pfn, int flags);
 
 
 /*
@@ -2873,5 +2865,17 @@ static inline int pages_identical(struct page *page1, struct page *page2)
        return !memcmp_pages(page1, page2);
 }
 
+#ifdef CONFIG_MAPPING_DIRTY_HELPERS
+unsigned long clean_record_shared_mapping_range(struct address_space *mapping,
+                                               pgoff_t first_index, pgoff_t nr,
+                                               pgoff_t bitmap_pgoff,
+                                               unsigned long *bitmap,
+                                               pgoff_t *start,
+                                               pgoff_t *end);
+
+unsigned long wp_shared_mapping_range(struct address_space *mapping,
+                                     pgoff_t first_index, pgoff_t nr);
+#endif
+
 #endif /* __KERNEL__ */
 #endif /* _LINUX_MM_H */