aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/gfp.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/gfp.h')
-rw-r--r--include/linux/gfp.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/include/linux/gfp.h b/include/linux/gfp.h
index f54adfcbec9c..a3b148a91874 100644
--- a/include/linux/gfp.h
+++ b/include/linux/gfp.h
@@ -34,6 +34,7 @@ struct vm_area_struct;
34#else 34#else
35#define ___GFP_NOTRACK 0 35#define ___GFP_NOTRACK 0
36#endif 36#endif
37#define ___GFP_NO_KSWAPD 0x400000u
37 38
38/* 39/*
39 * GFP bitmasks.. 40 * GFP bitmasks..
@@ -81,13 +82,15 @@ struct vm_area_struct;
81#define __GFP_RECLAIMABLE ((__force gfp_t)___GFP_RECLAIMABLE) /* Page is reclaimable */ 82#define __GFP_RECLAIMABLE ((__force gfp_t)___GFP_RECLAIMABLE) /* Page is reclaimable */
82#define __GFP_NOTRACK ((__force gfp_t)___GFP_NOTRACK) /* Don't track with kmemcheck */ 83#define __GFP_NOTRACK ((__force gfp_t)___GFP_NOTRACK) /* Don't track with kmemcheck */
83 84
85#define __GFP_NO_KSWAPD ((__force gfp_t)___GFP_NO_KSWAPD)
86
84/* 87/*
85 * This may seem redundant, but it's a way of annotating false positives vs. 88 * This may seem redundant, but it's a way of annotating false positives vs.
86 * allocations that simply cannot be supported (e.g. page tables). 89 * allocations that simply cannot be supported (e.g. page tables).
87 */ 90 */
88#define __GFP_NOTRACK_FALSE_POSITIVE (__GFP_NOTRACK) 91#define __GFP_NOTRACK_FALSE_POSITIVE (__GFP_NOTRACK)
89 92
90#define __GFP_BITS_SHIFT 22 /* Room for 22 __GFP_FOO bits */ 93#define __GFP_BITS_SHIFT 23 /* Room for 23 __GFP_FOO bits */
91#define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1)) 94#define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
92 95
93/* This equals 0, but use constants in case they ever change */ 96/* This equals 0, but use constants in case they ever change */
@@ -106,6 +109,9 @@ struct vm_area_struct;
106 __GFP_HARDWALL | __GFP_HIGHMEM | \ 109 __GFP_HARDWALL | __GFP_HIGHMEM | \
107 __GFP_MOVABLE) 110 __GFP_MOVABLE)
108#define GFP_IOFS (__GFP_IO | __GFP_FS) 111#define GFP_IOFS (__GFP_IO | __GFP_FS)
112#define GFP_TRANSHUGE (GFP_HIGHUSER_MOVABLE | __GFP_COMP | \
113 __GFP_NOMEMALLOC | __GFP_NORETRY | __GFP_NOWARN | \
114 __GFP_NO_KSWAPD)
109 115
110#ifdef CONFIG_NUMA 116#ifdef CONFIG_NUMA
111#define GFP_THISNODE (__GFP_THISNODE | __GFP_NOWARN | __GFP_NORETRY) 117#define GFP_THISNODE (__GFP_THISNODE | __GFP_NOWARN | __GFP_NORETRY)
@@ -325,14 +331,17 @@ alloc_pages(gfp_t gfp_mask, unsigned int order)
325{ 331{
326 return alloc_pages_current(gfp_mask, order); 332 return alloc_pages_current(gfp_mask, order);
327} 333}
328extern struct page *alloc_page_vma(gfp_t gfp_mask, 334extern struct page *alloc_pages_vma(gfp_t gfp_mask, int order,
329 struct vm_area_struct *vma, unsigned long addr); 335 struct vm_area_struct *vma, unsigned long addr);
330#else 336#else
331#define alloc_pages(gfp_mask, order) \ 337#define alloc_pages(gfp_mask, order) \
332 alloc_pages_node(numa_node_id(), gfp_mask, order) 338 alloc_pages_node(numa_node_id(), gfp_mask, order)
333#define alloc_page_vma(gfp_mask, vma, addr) alloc_pages(gfp_mask, 0) 339#define alloc_pages_vma(gfp_mask, order, vma, addr) \
340 alloc_pages(gfp_mask, order)
334#endif 341#endif
335#define alloc_page(gfp_mask) alloc_pages(gfp_mask, 0) 342#define alloc_page(gfp_mask) alloc_pages(gfp_mask, 0)
343#define alloc_page_vma(gfp_mask, vma, addr) \
344 alloc_pages_vma(gfp_mask, 0, vma, addr)
336 345
337extern unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order); 346extern unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order);
338extern unsigned long get_zeroed_page(gfp_t gfp_mask); 347extern unsigned long get_zeroed_page(gfp_t gfp_mask);