From: Peter Zijlstra Subject: [PATCH 03/31] mm: expose gfp_to_alloc_flags() Patch-mainline: not yet Expose the gfp to alloc_flags mapping, so we can use it in other parts of the vm. Signed-off-by: Peter Zijlstra Signed-off-by: Suresh Jayaraman --- mm/internal.h | 15 +++++++++++++++ mm/page_alloc.c | 16 +--------------- 2 files changed, 16 insertions(+), 15 deletions(-) --- a/mm/internal.h +++ b/mm/internal.h @@ -185,6 +185,21 @@ static inline struct page *mem_map_next( #define __paginginit __init #endif +/* The ALLOC_WMARK bits are used as an index to zone->watermark */ +#define ALLOC_WMARK_MIN WMARK_MIN +#define ALLOC_WMARK_LOW WMARK_LOW +#define ALLOC_WMARK_HIGH WMARK_HIGH +#define ALLOC_NO_WATERMARKS 0x04 /* don't check watermarks at all */ + +/* Mask to get the watermark bits */ +#define ALLOC_WMARK_MASK (ALLOC_NO_WATERMARKS-1) + +#define ALLOC_HARDER 0x10 /* try to alloc harder */ +#define ALLOC_HIGH 0x20 /* __GFP_HIGH set */ +#define ALLOC_CPUSET 0x40 /* check for correct cpuset */ + +int gfp_to_alloc_flags(gfp_t gfp_mask); + /* Memory initialisation debug and verification */ enum mminit_level { MMINIT_WARNING, --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1345,19 +1345,6 @@ failed: return NULL; } -/* The ALLOC_WMARK bits are used as an index to zone->watermark */ -#define ALLOC_WMARK_MIN WMARK_MIN -#define ALLOC_WMARK_LOW WMARK_LOW -#define ALLOC_WMARK_HIGH WMARK_HIGH -#define ALLOC_NO_WATERMARKS 0x04 /* don't check watermarks at all */ - -/* Mask to get the watermark bits */ -#define ALLOC_WMARK_MASK (ALLOC_NO_WATERMARKS-1) - -#define ALLOC_HARDER 0x10 /* try to alloc harder */ -#define ALLOC_HIGH 0x20 /* __GFP_HIGH set */ -#define ALLOC_CPUSET 0x40 /* check for correct cpuset */ - #ifdef CONFIG_FAIL_PAGE_ALLOC static struct fail_page_alloc_attr { @@ -1911,8 +1898,7 @@ void wake_all_kswapd(unsigned int order, wakeup_kswapd(zone, order, classzone_idx); } -static inline int -gfp_to_alloc_flags(gfp_t gfp_mask) +int gfp_to_alloc_flags(gfp_t gfp_mask) { int alloc_flags = ALLOC_WMARK_MIN | ALLOC_CPUSET; const gfp_t wait = gfp_mask & __GFP_WAIT;