|
@@ -30,6 +30,9 @@ struct vm_area_struct;
|
|
|
* cannot handle allocation failures.
|
|
* cannot handle allocation failures.
|
|
|
*
|
|
*
|
|
|
* __GFP_NORETRY: The VM implementation must not retry indefinitely.
|
|
* __GFP_NORETRY: The VM implementation must not retry indefinitely.
|
|
|
|
|
+ *
|
|
|
|
|
+ * __GFP_MOVABLE: Flag that this page will be movable by the page migration
|
|
|
|
|
+ * mechanism or reclaimed
|
|
|
*/
|
|
*/
|
|
|
#define __GFP_WAIT ((__force gfp_t)0x10u) /* Can wait and reschedule? */
|
|
#define __GFP_WAIT ((__force gfp_t)0x10u) /* Can wait and reschedule? */
|
|
|
#define __GFP_HIGH ((__force gfp_t)0x20u) /* Should access emergency pools? */
|
|
#define __GFP_HIGH ((__force gfp_t)0x20u) /* Should access emergency pools? */
|
|
@@ -45,6 +48,7 @@ struct vm_area_struct;
|
|
|
#define __GFP_NOMEMALLOC ((__force gfp_t)0x10000u) /* Don't use emergency reserves */
|
|
#define __GFP_NOMEMALLOC ((__force gfp_t)0x10000u) /* Don't use emergency reserves */
|
|
|
#define __GFP_HARDWALL ((__force gfp_t)0x20000u) /* Enforce hardwall cpuset memory allocs */
|
|
#define __GFP_HARDWALL ((__force gfp_t)0x20000u) /* Enforce hardwall cpuset memory allocs */
|
|
|
#define __GFP_THISNODE ((__force gfp_t)0x40000u)/* No fallback, no policies */
|
|
#define __GFP_THISNODE ((__force gfp_t)0x40000u)/* No fallback, no policies */
|
|
|
|
|
+#define __GFP_MOVABLE ((__force gfp_t)0x80000u) /* Page is movable */
|
|
|
|
|
|
|
|
#define __GFP_BITS_SHIFT 20 /* Room for 20 __GFP_FOO bits */
|
|
#define __GFP_BITS_SHIFT 20 /* Room for 20 __GFP_FOO bits */
|
|
|
#define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
|
|
#define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
|
|
@@ -53,7 +57,8 @@ struct vm_area_struct;
|
|
|
#define GFP_LEVEL_MASK (__GFP_WAIT|__GFP_HIGH|__GFP_IO|__GFP_FS| \
|
|
#define GFP_LEVEL_MASK (__GFP_WAIT|__GFP_HIGH|__GFP_IO|__GFP_FS| \
|
|
|
__GFP_COLD|__GFP_NOWARN|__GFP_REPEAT| \
|
|
__GFP_COLD|__GFP_NOWARN|__GFP_REPEAT| \
|
|
|
__GFP_NOFAIL|__GFP_NORETRY|__GFP_COMP| \
|
|
__GFP_NOFAIL|__GFP_NORETRY|__GFP_COMP| \
|
|
|
- __GFP_NOMEMALLOC|__GFP_HARDWALL|__GFP_THISNODE)
|
|
|
|
|
|
|
+ __GFP_NOMEMALLOC|__GFP_HARDWALL|__GFP_THISNODE| \
|
|
|
|
|
+ __GFP_MOVABLE)
|
|
|
|
|
|
|
|
/* This equals 0, but use constants in case they ever change */
|
|
/* This equals 0, but use constants in case they ever change */
|
|
|
#define GFP_NOWAIT (GFP_ATOMIC & ~__GFP_HIGH)
|
|
#define GFP_NOWAIT (GFP_ATOMIC & ~__GFP_HIGH)
|
|
@@ -65,6 +70,15 @@ struct vm_area_struct;
|
|
|
#define GFP_USER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL)
|
|
#define GFP_USER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL)
|
|
|
#define GFP_HIGHUSER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL | \
|
|
#define GFP_HIGHUSER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL | \
|
|
|
__GFP_HIGHMEM)
|
|
__GFP_HIGHMEM)
|
|
|
|
|
+#define GFP_HIGHUSER_MOVABLE (__GFP_WAIT | __GFP_IO | __GFP_FS | \
|
|
|
|
|
+ __GFP_HARDWALL | __GFP_HIGHMEM | \
|
|
|
|
|
+ __GFP_MOVABLE)
|
|
|
|
|
+#define GFP_NOFS_PAGECACHE (__GFP_WAIT | __GFP_IO | __GFP_MOVABLE)
|
|
|
|
|
+#define GFP_USER_PAGECACHE (__GFP_WAIT | __GFP_IO | __GFP_FS | \
|
|
|
|
|
+ __GFP_HARDWALL | __GFP_MOVABLE)
|
|
|
|
|
+#define GFP_HIGHUSER_PAGECACHE (__GFP_WAIT | __GFP_IO | __GFP_FS | \
|
|
|
|
|
+ __GFP_HARDWALL | __GFP_HIGHMEM | \
|
|
|
|
|
+ __GFP_MOVABLE)
|
|
|
|
|
|
|
|
#ifdef CONFIG_NUMA
|
|
#ifdef CONFIG_NUMA
|
|
|
#define GFP_THISNODE (__GFP_THISNODE | __GFP_NOWARN | __GFP_NORETRY)
|
|
#define GFP_THISNODE (__GFP_THISNODE | __GFP_NOWARN | __GFP_NORETRY)
|