diff options
Diffstat (limited to 'include/linux/page_cgroup.h')
| -rw-r--r-- | include/linux/page_cgroup.h | 70 | 
1 files changed, 15 insertions, 55 deletions
| diff --git a/include/linux/page_cgroup.h b/include/linux/page_cgroup.h index 777a524716db..5c831f1eca79 100644 --- a/include/linux/page_cgroup.h +++ b/include/linux/page_cgroup.h @@ -3,17 +3,15 @@  enum {  	/* flags for mem_cgroup */ -	PCG_LOCK,  /* Lock for pc->mem_cgroup and following bits. */ -	PCG_USED, /* this object is in use. */ -	PCG_MIGRATION, /* under page migration */ -	__NR_PCG_FLAGS, +	PCG_USED = 0x01,	/* This page is charged to a memcg */ +	PCG_MEM = 0x02,		/* This page holds a memory charge */ +	PCG_MEMSW = 0x04,	/* This page holds a memory+swap charge */  }; -#ifndef __GENERATING_BOUNDS_H -#include <generated/bounds.h> +struct pglist_data;  #ifdef CONFIG_MEMCG -#include <linux/bit_spinlock.h> +struct mem_cgroup;  /*   * Page Cgroup can be considered as an extended mem_map. @@ -27,65 +25,30 @@ struct page_cgroup {  	struct mem_cgroup *mem_cgroup;  }; -void __meminit pgdat_page_cgroup_init(struct pglist_data *pgdat); +extern void pgdat_page_cgroup_init(struct pglist_data *pgdat);  #ifdef CONFIG_SPARSEMEM -static inline void __init page_cgroup_init_flatmem(void) +static inline void page_cgroup_init_flatmem(void)  {  } -extern void __init page_cgroup_init(void); +extern void page_cgroup_init(void);  #else -void __init page_cgroup_init_flatmem(void); -static inline void __init page_cgroup_init(void) +extern void page_cgroup_init_flatmem(void); +static inline void page_cgroup_init(void)  {  }  #endif  struct page_cgroup *lookup_page_cgroup(struct page *page); -struct page *lookup_cgroup_page(struct page_cgroup *pc); - -#define TESTPCGFLAG(uname, lname)			\ -static inline int PageCgroup##uname(struct page_cgroup *pc)	\ -	{ return test_bit(PCG_##lname, &pc->flags); } - -#define SETPCGFLAG(uname, lname)			\ -static inline void SetPageCgroup##uname(struct page_cgroup *pc)\ -	{ set_bit(PCG_##lname, &pc->flags);  } - -#define CLEARPCGFLAG(uname, lname)			\ -static inline void ClearPageCgroup##uname(struct page_cgroup *pc)	\ -	{ clear_bit(PCG_##lname, &pc->flags);  } - -#define TESTCLEARPCGFLAG(uname, lname)			\ -static inline int TestClearPageCgroup##uname(struct page_cgroup *pc)	\ -	{ return test_and_clear_bit(PCG_##lname, &pc->flags);  } - -TESTPCGFLAG(Used, USED) -CLEARPCGFLAG(Used, USED) -SETPCGFLAG(Used, USED) - -SETPCGFLAG(Migration, MIGRATION) -CLEARPCGFLAG(Migration, MIGRATION) -TESTPCGFLAG(Migration, MIGRATION) -static inline void lock_page_cgroup(struct page_cgroup *pc) +static inline int PageCgroupUsed(struct page_cgroup *pc)  { -	/* -	 * Don't take this lock in IRQ context. -	 * This lock is for pc->mem_cgroup, USED, MIGRATION -	 */ -	bit_spin_lock(PCG_LOCK, &pc->flags); +	return !!(pc->flags & PCG_USED);  } - -static inline void unlock_page_cgroup(struct page_cgroup *pc) -{ -	bit_spin_unlock(PCG_LOCK, &pc->flags); -} - -#else /* CONFIG_MEMCG */ +#else /* !CONFIG_MEMCG */  struct page_cgroup; -static inline void __meminit pgdat_page_cgroup_init(struct pglist_data *pgdat) +static inline void pgdat_page_cgroup_init(struct pglist_data *pgdat)  {  } @@ -98,10 +61,9 @@ static inline void page_cgroup_init(void)  {  } -static inline void __init page_cgroup_init_flatmem(void) +static inline void page_cgroup_init_flatmem(void)  {  } -  #endif /* CONFIG_MEMCG */  #include <linux/swap.h> @@ -140,6 +102,4 @@ static inline void swap_cgroup_swapoff(int type)  #endif /* CONFIG_MEMCG_SWAP */ -#endif /* !__GENERATING_BOUNDS_H */ -  #endif /* __LINUX_PAGE_CGROUP_H */ | 
