diff options
Diffstat (limited to 'include/linux/gfp.h')
| -rw-r--r-- | include/linux/gfp.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 0d2ef0b082a6..bc68dd9a6d41 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h | |||
| @@ -30,6 +30,9 @@ struct vm_area_struct; | |||
| 30 | * cannot handle allocation failures. | 30 | * cannot handle allocation failures. |
| 31 | * | 31 | * |
| 32 | * __GFP_NORETRY: The VM implementation must not retry indefinitely. | 32 | * __GFP_NORETRY: The VM implementation must not retry indefinitely. |
| 33 | * | ||
| 34 | * __GFP_MOVABLE: Flag that this page will be movable by the page migration | ||
| 35 | * mechanism or reclaimed | ||
| 33 | */ | 36 | */ |
| 34 | #define __GFP_WAIT ((__force gfp_t)0x10u) /* Can wait and reschedule? */ | 37 | #define __GFP_WAIT ((__force gfp_t)0x10u) /* Can wait and reschedule? */ |
| 35 | #define __GFP_HIGH ((__force gfp_t)0x20u) /* Should access emergency pools? */ | 38 | #define __GFP_HIGH ((__force gfp_t)0x20u) /* Should access emergency pools? */ |
| @@ -45,6 +48,7 @@ struct vm_area_struct; | |||
| 45 | #define __GFP_NOMEMALLOC ((__force gfp_t)0x10000u) /* Don't use emergency reserves */ | 48 | #define __GFP_NOMEMALLOC ((__force gfp_t)0x10000u) /* Don't use emergency reserves */ |
| 46 | #define __GFP_HARDWALL ((__force gfp_t)0x20000u) /* Enforce hardwall cpuset memory allocs */ | 49 | #define __GFP_HARDWALL ((__force gfp_t)0x20000u) /* Enforce hardwall cpuset memory allocs */ |
| 47 | #define __GFP_THISNODE ((__force gfp_t)0x40000u)/* No fallback, no policies */ | 50 | #define __GFP_THISNODE ((__force gfp_t)0x40000u)/* No fallback, no policies */ |
| 51 | #define __GFP_MOVABLE ((__force gfp_t)0x80000u) /* Page is movable */ | ||
| 48 | 52 | ||
| 49 | #define __GFP_BITS_SHIFT 20 /* Room for 20 __GFP_FOO bits */ | 53 | #define __GFP_BITS_SHIFT 20 /* Room for 20 __GFP_FOO bits */ |
| 50 | #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1)) | 54 | #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1)) |
| @@ -53,7 +57,8 @@ struct vm_area_struct; | |||
| 53 | #define GFP_LEVEL_MASK (__GFP_WAIT|__GFP_HIGH|__GFP_IO|__GFP_FS| \ | 57 | #define GFP_LEVEL_MASK (__GFP_WAIT|__GFP_HIGH|__GFP_IO|__GFP_FS| \ |
| 54 | __GFP_COLD|__GFP_NOWARN|__GFP_REPEAT| \ | 58 | __GFP_COLD|__GFP_NOWARN|__GFP_REPEAT| \ |
| 55 | __GFP_NOFAIL|__GFP_NORETRY|__GFP_COMP| \ | 59 | __GFP_NOFAIL|__GFP_NORETRY|__GFP_COMP| \ |
| 56 | __GFP_NOMEMALLOC|__GFP_HARDWALL|__GFP_THISNODE) | 60 | __GFP_NOMEMALLOC|__GFP_HARDWALL|__GFP_THISNODE| \ |
| 61 | __GFP_MOVABLE) | ||
| 57 | 62 | ||
| 58 | /* This equals 0, but use constants in case they ever change */ | 63 | /* This equals 0, but use constants in case they ever change */ |
| 59 | #define GFP_NOWAIT (GFP_ATOMIC & ~__GFP_HIGH) | 64 | #define GFP_NOWAIT (GFP_ATOMIC & ~__GFP_HIGH) |
| @@ -65,6 +70,15 @@ struct vm_area_struct; | |||
| 65 | #define GFP_USER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL) | 70 | #define GFP_USER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL) |
| 66 | #define GFP_HIGHUSER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL | \ | 71 | #define GFP_HIGHUSER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL | \ |
| 67 | __GFP_HIGHMEM) | 72 | __GFP_HIGHMEM) |
| 73 | #define GFP_HIGHUSER_MOVABLE (__GFP_WAIT | __GFP_IO | __GFP_FS | \ | ||
| 74 | __GFP_HARDWALL | __GFP_HIGHMEM | \ | ||
| 75 | __GFP_MOVABLE) | ||
| 76 | #define GFP_NOFS_PAGECACHE (__GFP_WAIT | __GFP_IO | __GFP_MOVABLE) | ||
| 77 | #define GFP_USER_PAGECACHE (__GFP_WAIT | __GFP_IO | __GFP_FS | \ | ||
| 78 | __GFP_HARDWALL | __GFP_MOVABLE) | ||
| 79 | #define GFP_HIGHUSER_PAGECACHE (__GFP_WAIT | __GFP_IO | __GFP_FS | \ | ||
| 80 | __GFP_HARDWALL | __GFP_HIGHMEM | \ | ||
| 81 | __GFP_MOVABLE) | ||
| 68 | 82 | ||
| 69 | #ifdef CONFIG_NUMA | 83 | #ifdef CONFIG_NUMA |
| 70 | #define GFP_THISNODE (__GFP_THISNODE | __GFP_NOWARN | __GFP_NORETRY) | 84 | #define GFP_THISNODE (__GFP_THISNODE | __GFP_NOWARN | __GFP_NORETRY) |
| @@ -92,6 +106,9 @@ static inline enum zone_type gfp_zone(gfp_t flags) | |||
| 92 | if (flags & __GFP_DMA32) | 106 | if (flags & __GFP_DMA32) |
| 93 | return ZONE_DMA32; | 107 | return ZONE_DMA32; |
| 94 | #endif | 108 | #endif |
| 109 | if ((flags & (__GFP_HIGHMEM | __GFP_MOVABLE)) == | ||
| 110 | (__GFP_HIGHMEM | __GFP_MOVABLE)) | ||
| 111 | return ZONE_MOVABLE; | ||
| 95 | #ifdef CONFIG_HIGHMEM | 112 | #ifdef CONFIG_HIGHMEM |
| 96 | if (flags & __GFP_HIGHMEM) | 113 | if (flags & __GFP_HIGHMEM) |
| 97 | return ZONE_HIGHMEM; | 114 | return ZONE_HIGHMEM; |
