xref: /linux/mm/vmalloc.h (revision 4e69c1856bfd9ffb7e9d335a25842fa211628929)
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 #ifdef CONFIG_MMU
9 void __init vmalloc_init(void);
10 int __must_check vmap_pages_range_noflush(unsigned long addr, unsigned long end,
11 		pgprot_t prot, struct page **pages,
12 		unsigned int page_shift, gfp_t gfp_mask);
13 unsigned int get_vm_area_page_order(struct vm_struct *vm);
14 #else
15 static inline void vmalloc_init(void) {}
16 
17 static inline
18 int __must_check vmap_pages_range_noflush(unsigned long addr, unsigned long end,
19 		pgprot_t prot, struct page **pages,
20 		unsigned int page_shift, gfp_t gfp_mask)
21 {
22 	return -EINVAL;
23 }
24 
25 static inline void vunmap_range_noflush(unsigned long start, unsigned long end)
26 {
27 }
28 #endif
29 
30 struct vm_struct *__get_vm_area_node(unsigned long size,
31 		unsigned long align, unsigned long shift,
32 		unsigned long vm_flags, unsigned long start,
33 		unsigned long end, int node, gfp_t gfp_mask,
34 		const void *caller);
35 
36 void clear_vm_uninitialized_flag(struct vm_struct *vm);
37 
38 int __must_check __vmap_pages_range_noflush(unsigned long addr,
39 		unsigned long end, pgprot_t prot,
40 		struct page **pages, unsigned int page_shift);
41 
42 void vunmap_range_noflush(unsigned long start, unsigned long end);
43 
44 void __vunmap_range_noflush(unsigned long start, unsigned long end);
45 
46 #endif /* __MM_VMALLOC_H */
47