diff options
Diffstat (limited to 'include/linux/memcontrol.h')
| -rw-r--r-- | include/linux/memcontrol.h | 98 | 
1 files changed, 23 insertions, 75 deletions
| diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index eb65d29516ca..e0752d204d9e 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -54,39 +54,20 @@ struct mem_cgroup_reclaim_cookie {  };  #ifdef CONFIG_MEMCG -/* - * All "charge" functions with gfp_mask should use GFP_KERNEL or - * (gfp_mask & GFP_RECLAIM_MASK). In current implementatin, memcg doesn't - * alloc memory but reclaims memory from all available zones. So, "where I want - * memory from" bits of gfp_mask has no meaning. So any bits of that field is - * available but adding a rule is better. charge functions' gfp_mask should - * be set to GFP_KERNEL or gfp_mask & GFP_RECLAIM_MASK for avoiding ambiguous - * codes. - * (Of course, if memcg does memory allocation in future, GFP_KERNEL is sane.) - */ +int mem_cgroup_try_charge(struct page *page, struct mm_struct *mm, +			  gfp_t gfp_mask, struct mem_cgroup **memcgp); +void mem_cgroup_commit_charge(struct page *page, struct mem_cgroup *memcg, +			      bool lrucare); +void mem_cgroup_cancel_charge(struct page *page, struct mem_cgroup *memcg); +void mem_cgroup_uncharge(struct page *page); +void mem_cgroup_uncharge_list(struct list_head *page_list); -extern int mem_cgroup_charge_anon(struct page *page, struct mm_struct *mm, -				gfp_t gfp_mask); -/* for swap handling */ -extern int mem_cgroup_try_charge_swapin(struct mm_struct *mm, -		struct page *page, gfp_t mask, struct mem_cgroup **memcgp); -extern void mem_cgroup_commit_charge_swapin(struct page *page, -					struct mem_cgroup *memcg); -extern void mem_cgroup_cancel_charge_swapin(struct mem_cgroup *memcg); - -extern int mem_cgroup_charge_file(struct page *page, struct mm_struct *mm, -					gfp_t gfp_mask); +void mem_cgroup_migrate(struct page *oldpage, struct page *newpage, +			bool lrucare);  struct lruvec *mem_cgroup_zone_lruvec(struct zone *, struct mem_cgroup *);  struct lruvec *mem_cgroup_page_lruvec(struct page *, struct zone *); -/* For coalescing uncharge for reducing memcg' overhead*/ -extern void mem_cgroup_uncharge_start(void); -extern void mem_cgroup_uncharge_end(void); - -extern void mem_cgroup_uncharge_page(struct page *page); -extern void mem_cgroup_uncharge_cache_page(struct page *page); -  bool __mem_cgroup_same_or_subtree(const struct mem_cgroup *root_memcg,  				  struct mem_cgroup *memcg);  bool task_in_mem_cgroup(struct task_struct *task, @@ -113,12 +94,6 @@ bool mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *memcg)  extern struct cgroup_subsys_state *mem_cgroup_css(struct mem_cgroup *memcg); -extern void -mem_cgroup_prepare_migration(struct page *page, struct page *newpage, -			     struct mem_cgroup **memcgp); -extern void mem_cgroup_end_migration(struct mem_cgroup *memcg, -	struct page *oldpage, struct page *newpage, bool migration_ok); -  struct mem_cgroup *mem_cgroup_iter(struct mem_cgroup *,  				   struct mem_cgroup *,  				   struct mem_cgroup_reclaim_cookie *); @@ -133,8 +108,6 @@ unsigned long mem_cgroup_get_lru_size(struct lruvec *lruvec, enum lru_list);  void mem_cgroup_update_lru_size(struct lruvec *, enum lru_list, int);  extern void mem_cgroup_print_oom_info(struct mem_cgroup *memcg,  					struct task_struct *p); -extern void mem_cgroup_replace_page_cache(struct page *oldpage, -					struct page *newpage);  static inline void mem_cgroup_oom_enable(void)  { @@ -233,46 +206,36 @@ void mem_cgroup_print_bad_page(struct page *page);  #else /* CONFIG_MEMCG */  struct mem_cgroup; -static inline int mem_cgroup_charge_anon(struct page *page, -					struct mm_struct *mm, gfp_t gfp_mask) -{ -	return 0; -} - -static inline int mem_cgroup_charge_file(struct page *page, -					struct mm_struct *mm, gfp_t gfp_mask) -{ -	return 0; -} - -static inline int mem_cgroup_try_charge_swapin(struct mm_struct *mm, -		struct page *page, gfp_t gfp_mask, struct mem_cgroup **memcgp) +static inline int mem_cgroup_try_charge(struct page *page, struct mm_struct *mm, +					gfp_t gfp_mask, +					struct mem_cgroup **memcgp)  { +	*memcgp = NULL;  	return 0;  } -static inline void mem_cgroup_commit_charge_swapin(struct page *page, -					  struct mem_cgroup *memcg) -{ -} - -static inline void mem_cgroup_cancel_charge_swapin(struct mem_cgroup *memcg) +static inline void mem_cgroup_commit_charge(struct page *page, +					    struct mem_cgroup *memcg, +					    bool lrucare)  {  } -static inline void mem_cgroup_uncharge_start(void) +static inline void mem_cgroup_cancel_charge(struct page *page, +					    struct mem_cgroup *memcg)  {  } -static inline void mem_cgroup_uncharge_end(void) +static inline void mem_cgroup_uncharge(struct page *page)  {  } -static inline void mem_cgroup_uncharge_page(struct page *page) +static inline void mem_cgroup_uncharge_list(struct list_head *page_list)  {  } -static inline void mem_cgroup_uncharge_cache_page(struct page *page) +static inline void mem_cgroup_migrate(struct page *oldpage, +				      struct page *newpage, +				      bool lrucare)  {  } @@ -311,17 +274,6 @@ static inline struct cgroup_subsys_state  	return NULL;  } -static inline void -mem_cgroup_prepare_migration(struct page *page, struct page *newpage, -			     struct mem_cgroup **memcgp) -{ -} - -static inline void mem_cgroup_end_migration(struct mem_cgroup *memcg, -		struct page *oldpage, struct page *newpage, bool migration_ok) -{ -} -  static inline struct mem_cgroup *  mem_cgroup_iter(struct mem_cgroup *root,  		struct mem_cgroup *prev, @@ -417,10 +369,6 @@ static inline  void mem_cgroup_count_vm_event(struct mm_struct *mm, enum vm_event_item idx)  {  } -static inline void mem_cgroup_replace_page_cache(struct page *oldpage, -				struct page *newpage) -{ -}  #endif /* CONFIG_MEMCG */  #if !defined(CONFIG_MEMCG) || !defined(CONFIG_DEBUG_VM) | 
