diff options
Diffstat (limited to 'include/linux/gfp.h')
| -rw-r--r-- | include/linux/gfp.h | 13 | 
1 files changed, 11 insertions, 2 deletions
diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 02c1c9710be..0f615eb23d0 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h @@ -30,9 +30,12 @@ struct vm_area_struct;  #define ___GFP_HARDWALL		0x20000u  #define ___GFP_THISNODE		0x40000u  #define ___GFP_RECLAIMABLE	0x80000u +#define ___GFP_KMEMCG		0x100000u  #define ___GFP_NOTRACK		0x200000u +#define ___GFP_NO_KSWAPD	0x400000u  #define ___GFP_OTHER_NODE	0x800000u  #define ___GFP_WRITE		0x1000000u +/* If the above are modified, __GFP_BITS_SHIFT may need updating */  /*   * GFP bitmasks.. @@ -85,7 +88,9 @@ struct vm_area_struct;  #define __GFP_RECLAIMABLE ((__force gfp_t)___GFP_RECLAIMABLE) /* Page is reclaimable */  #define __GFP_NOTRACK	((__force gfp_t)___GFP_NOTRACK)  /* Don't track with kmemcheck */ +#define __GFP_NO_KSWAPD	((__force gfp_t)___GFP_NO_KSWAPD)  #define __GFP_OTHER_NODE ((__force gfp_t)___GFP_OTHER_NODE) /* On behalf of other node */ +#define __GFP_KMEMCG	((__force gfp_t)___GFP_KMEMCG) /* Allocation comes from a memcg-accounted resource */  #define __GFP_WRITE	((__force gfp_t)___GFP_WRITE)	/* Allocator intends to dirty page */  /* @@ -114,7 +119,8 @@ struct vm_area_struct;  				 __GFP_MOVABLE)  #define GFP_IOFS	(__GFP_IO | __GFP_FS)  #define GFP_TRANSHUGE	(GFP_HIGHUSER_MOVABLE | __GFP_COMP | \ -			 __GFP_NOMEMALLOC | __GFP_NORETRY | __GFP_NOWARN) +			 __GFP_NOMEMALLOC | __GFP_NORETRY | __GFP_NOWARN | \ +			 __GFP_NO_KSWAPD)  #ifdef CONFIG_NUMA  #define GFP_THISNODE	(__GFP_THISNODE | __GFP_NOWARN | __GFP_NORETRY) @@ -263,7 +269,7 @@ static inline enum zone_type gfp_zone(gfp_t flags)  static inline int gfp_zonelist(gfp_t flags)  { -	if (NUMA_BUILD && unlikely(flags & __GFP_THISNODE)) +	if (IS_ENABLED(CONFIG_NUMA) && unlikely(flags & __GFP_THISNODE))  		return 1;  	return 0; @@ -361,6 +367,9 @@ extern void free_pages(unsigned long addr, unsigned int order);  extern void free_hot_cold_page(struct page *page, int cold);  extern void free_hot_cold_page_list(struct list_head *list, int cold); +extern void __free_memcg_kmem_pages(struct page *page, unsigned int order); +extern void free_memcg_kmem_pages(unsigned long addr, unsigned int order); +  #define __free_page(page) __free_pages((page), 0)  #define free_page(addr) free_pages((addr), 0)  |