upgrade to fedora-2.6.12-1.1398.FC4 + vserver 2.0.rc7
[linux-2.6.git] / include / linux / highmem.h
index d3950fc..41c32a0 100644 (file)
@@ -9,16 +9,16 @@
 
 #ifdef CONFIG_HIGHMEM
 
-extern struct page *highmem_start_page;
-
 #include <asm/highmem.h>
 
 /* declarations for linux/mm/highmem.c */
 unsigned int nr_free_highpages(void);
+void kmap_flush_unused(void);
 
 #else /* CONFIG_HIGHMEM */
 
 static inline unsigned int nr_free_highpages(void) { return 0; }
+static inline void kmap_flush_unused(void) { }
 
 static inline void *kmap(struct page *page)
 {
@@ -45,6 +45,19 @@ static inline void clear_user_highpage(struct page *page, unsigned long vaddr)
        smp_wmb();
 }
 
+#ifndef __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
+static inline struct page *
+alloc_zeroed_user_highpage(struct vm_area_struct *vma, unsigned long vaddr)
+{
+       struct page *page = alloc_page_vma(GFP_HIGHUSER, vma, vaddr);
+
+       if (page)
+               clear_user_highpage(page, vaddr);
+
+       return page;
+}
+#endif
+
 static inline void clear_highpage(struct page *page)
 {
        void *kaddr = kmap_atomic(page, KM_USER0);