aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/memcontrol.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/memcontrol.h')
-rw-r--r--include/linux/memcontrol.h67
1 files changed, 58 insertions, 9 deletions
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
index 7b4d9d79570b..b3e7a667e03c 100644
--- a/include/linux/memcontrol.h
+++ b/include/linux/memcontrol.h
@@ -30,9 +30,21 @@ struct page;
30struct mm_struct; 30struct mm_struct;
31struct kmem_cache; 31struct kmem_cache;
32 32
33/* Stats that can be updated by kernel. */ 33/*
34enum mem_cgroup_page_stat_item { 34 * The corresponding mem_cgroup_stat_names is defined in mm/memcontrol.c,
35 MEMCG_NR_FILE_MAPPED, /* # of pages charged as file rss */ 35 * These two lists should keep in accord with each other.
36 */
37enum mem_cgroup_stat_index {
38 /*
39 * For MEM_CONTAINER_TYPE_ALL, usage = pagecache + rss.
40 */
41 MEM_CGROUP_STAT_CACHE, /* # of pages charged as cache */
42 MEM_CGROUP_STAT_RSS, /* # of pages charged as anon rss */
43 MEM_CGROUP_STAT_RSS_HUGE, /* # of pages charged as anon huge */
44 MEM_CGROUP_STAT_FILE_MAPPED, /* # of pages charged as file rss */
45 MEM_CGROUP_STAT_WRITEBACK, /* # of pages under writeback */
46 MEM_CGROUP_STAT_SWAP, /* # of pages, swapped out */
47 MEM_CGROUP_STAT_NSTATS,
36}; 48};
37 49
38struct mem_cgroup_reclaim_cookie { 50struct mem_cgroup_reclaim_cookie {
@@ -85,7 +97,7 @@ extern struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p);
85extern struct mem_cgroup *try_get_mem_cgroup_from_mm(struct mm_struct *mm); 97extern struct mem_cgroup *try_get_mem_cgroup_from_mm(struct mm_struct *mm);
86 98
87extern struct mem_cgroup *parent_mem_cgroup(struct mem_cgroup *memcg); 99extern struct mem_cgroup *parent_mem_cgroup(struct mem_cgroup *memcg);
88extern struct mem_cgroup *mem_cgroup_from_cont(struct cgroup *cont); 100extern struct mem_cgroup *mem_cgroup_from_css(struct cgroup_subsys_state *css);
89 101
90static inline 102static inline
91bool mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *memcg) 103bool mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *memcg)
@@ -125,6 +137,25 @@ extern void mem_cgroup_print_oom_info(struct mem_cgroup *memcg,
125extern void mem_cgroup_replace_page_cache(struct page *oldpage, 137extern void mem_cgroup_replace_page_cache(struct page *oldpage,
126 struct page *newpage); 138 struct page *newpage);
127 139
140static inline void mem_cgroup_oom_enable(void)
141{
142 WARN_ON(current->memcg_oom.may_oom);
143 current->memcg_oom.may_oom = 1;
144}
145
146static inline void mem_cgroup_oom_disable(void)
147{
148 WARN_ON(!current->memcg_oom.may_oom);
149 current->memcg_oom.may_oom = 0;
150}
151
152static inline bool task_in_memcg_oom(struct task_struct *p)
153{
154 return p->memcg_oom.memcg;
155}
156
157bool mem_cgroup_oom_synchronize(bool wait);
158
128#ifdef CONFIG_MEMCG_SWAP 159#ifdef CONFIG_MEMCG_SWAP
129extern int do_swap_account; 160extern int do_swap_account;
130#endif 161#endif
@@ -165,17 +196,17 @@ static inline void mem_cgroup_end_update_page_stat(struct page *page,
165} 196}
166 197
167void mem_cgroup_update_page_stat(struct page *page, 198void mem_cgroup_update_page_stat(struct page *page,
168 enum mem_cgroup_page_stat_item idx, 199 enum mem_cgroup_stat_index idx,
169 int val); 200 int val);
170 201
171static inline void mem_cgroup_inc_page_stat(struct page *page, 202static inline void mem_cgroup_inc_page_stat(struct page *page,
172 enum mem_cgroup_page_stat_item idx) 203 enum mem_cgroup_stat_index idx)
173{ 204{
174 mem_cgroup_update_page_stat(page, idx, 1); 205 mem_cgroup_update_page_stat(page, idx, 1);
175} 206}
176 207
177static inline void mem_cgroup_dec_page_stat(struct page *page, 208static inline void mem_cgroup_dec_page_stat(struct page *page,
178 enum mem_cgroup_page_stat_item idx) 209 enum mem_cgroup_stat_index idx)
179{ 210{
180 mem_cgroup_update_page_stat(page, idx, -1); 211 mem_cgroup_update_page_stat(page, idx, -1);
181} 212}
@@ -348,13 +379,31 @@ static inline void mem_cgroup_end_update_page_stat(struct page *page,
348{ 379{
349} 380}
350 381
382static inline void mem_cgroup_oom_enable(void)
383{
384}
385
386static inline void mem_cgroup_oom_disable(void)
387{
388}
389
390static inline bool task_in_memcg_oom(struct task_struct *p)
391{
392 return false;
393}
394
395static inline bool mem_cgroup_oom_synchronize(bool wait)
396{
397 return false;
398}
399
351static inline void mem_cgroup_inc_page_stat(struct page *page, 400static inline void mem_cgroup_inc_page_stat(struct page *page,
352 enum mem_cgroup_page_stat_item idx) 401 enum mem_cgroup_stat_index idx)
353{ 402{
354} 403}
355 404
356static inline void mem_cgroup_dec_page_stat(struct page *page, 405static inline void mem_cgroup_dec_page_stat(struct page *page,
357 enum mem_cgroup_page_stat_item idx) 406 enum mem_cgroup_stat_index idx)
358{ 407{
359} 408}
360 409