1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 3 * mm-internal APIs for vmalloc 4 */ 5 #ifndef __MM_VMALLOC_H 6 #define __MM_VMALLOC_H 7 8 #include <linux/vmalloc.h> 9 10 #ifdef CONFIG_MMU 11 void __init vmalloc_init(void); 12 int __must_check vmap_pages_range_noflush(unsigned long addr, unsigned long end, 13 pgprot_t prot, struct page **pages, 14 unsigned int page_shift, gfp_t gfp_mask); 15 unsigned int get_vm_area_page_order(struct vm_struct *vm); 16 #else 17 static inline void vmalloc_init(void) {} 18 19 static inline 20 int __must_check vmap_pages_range_noflush(unsigned long addr, unsigned long end, 21 pgprot_t prot, struct page **pages, 22 unsigned int page_shift, gfp_t gfp_mask) 23 { 24 return -EINVAL; 25 } 26 27 static inline void vunmap_range_noflush(unsigned long start, unsigned long end) 28 { 29 } 30 #endif 31 32 struct vm_struct *__get_vm_area_node(unsigned long size, 33 unsigned long align, unsigned long shift, 34 unsigned long vm_flags, unsigned long start, 35 unsigned long end, int node, gfp_t gfp_mask, 36 const void *caller); 37 38 void clear_vm_uninitialized_flag(struct vm_struct *vm); 39 40 int __must_check __vmap_pages_range_noflush(unsigned long addr, 41 unsigned long end, pgprot_t prot, 42 struct page **pages, unsigned int page_shift); 43 44 void vunmap_range_noflush(unsigned long start, unsigned long end); 45 46 void __vunmap_range_noflush(unsigned long start, unsigned long end); 47 48 #endif /* __MM_VMALLOC_H */ 49