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.h45
1 files changed, 39 insertions, 6 deletions
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
index 159a0762aeaf..f512e189be5a 100644
--- a/include/linux/memcontrol.h
+++ b/include/linux/memcontrol.h
@@ -25,6 +25,11 @@ struct page_cgroup;
25struct page; 25struct page;
26struct mm_struct; 26struct mm_struct;
27 27
28/* Stats that can be updated by kernel. */
29enum mem_cgroup_page_stat_item {
30 MEMCG_NR_FILE_MAPPED, /* # of pages charged as file rss */
31};
32
28extern unsigned long mem_cgroup_isolate_pages(unsigned long nr_to_scan, 33extern unsigned long mem_cgroup_isolate_pages(unsigned long nr_to_scan,
29 struct list_head *dst, 34 struct list_head *dst,
30 unsigned long *scanned, int order, 35 unsigned long *scanned, int order,
@@ -93,7 +98,7 @@ extern int
93mem_cgroup_prepare_migration(struct page *page, 98mem_cgroup_prepare_migration(struct page *page,
94 struct page *newpage, struct mem_cgroup **ptr); 99 struct page *newpage, struct mem_cgroup **ptr);
95extern void mem_cgroup_end_migration(struct mem_cgroup *mem, 100extern void mem_cgroup_end_migration(struct mem_cgroup *mem,
96 struct page *oldpage, struct page *newpage); 101 struct page *oldpage, struct page *newpage, bool migration_ok);
97 102
98/* 103/*
99 * For memory reclaim. 104 * For memory reclaim.
@@ -121,11 +126,30 @@ static inline bool mem_cgroup_disabled(void)
121 return false; 126 return false;
122} 127}
123 128
124void mem_cgroup_update_file_mapped(struct page *page, int val); 129void mem_cgroup_update_page_stat(struct page *page,
130 enum mem_cgroup_page_stat_item idx,
131 int val);
132
133static inline void mem_cgroup_inc_page_stat(struct page *page,
134 enum mem_cgroup_page_stat_item idx)
135{
136 mem_cgroup_update_page_stat(page, idx, 1);
137}
138
139static inline void mem_cgroup_dec_page_stat(struct page *page,
140 enum mem_cgroup_page_stat_item idx)
141{
142 mem_cgroup_update_page_stat(page, idx, -1);
143}
144
125unsigned long mem_cgroup_soft_limit_reclaim(struct zone *zone, int order, 145unsigned long mem_cgroup_soft_limit_reclaim(struct zone *zone, int order,
126 gfp_t gfp_mask); 146 gfp_t gfp_mask);
127u64 mem_cgroup_get_limit(struct mem_cgroup *mem); 147u64 mem_cgroup_get_limit(struct mem_cgroup *mem);
128 148
149#ifdef CONFIG_TRANSPARENT_HUGEPAGE
150void mem_cgroup_split_huge_fixup(struct page *head, struct page *tail);
151#endif
152
129#else /* CONFIG_CGROUP_MEM_RES_CTLR */ 153#else /* CONFIG_CGROUP_MEM_RES_CTLR */
130struct mem_cgroup; 154struct mem_cgroup;
131 155
@@ -231,8 +255,7 @@ mem_cgroup_prepare_migration(struct page *page, struct page *newpage,
231} 255}
232 256
233static inline void mem_cgroup_end_migration(struct mem_cgroup *mem, 257static inline void mem_cgroup_end_migration(struct mem_cgroup *mem,
234 struct page *oldpage, 258 struct page *oldpage, struct page *newpage, bool migration_ok)
235 struct page *newpage)
236{ 259{
237} 260}
238 261
@@ -293,8 +316,13 @@ mem_cgroup_print_oom_info(struct mem_cgroup *memcg, struct task_struct *p)
293{ 316{
294} 317}
295 318
296static inline void mem_cgroup_update_file_mapped(struct page *page, 319static inline void mem_cgroup_inc_page_stat(struct page *page,
297 int val) 320 enum mem_cgroup_page_stat_item idx)
321{
322}
323
324static inline void mem_cgroup_dec_page_stat(struct page *page,
325 enum mem_cgroup_page_stat_item idx)
298{ 326{
299} 327}
300 328
@@ -311,6 +339,11 @@ u64 mem_cgroup_get_limit(struct mem_cgroup *mem)
311 return 0; 339 return 0;
312} 340}
313 341
342static inline void mem_cgroup_split_huge_fixup(struct page *head,
343 struct page *tail)
344{
345}
346
314#endif /* CONFIG_CGROUP_MEM_CONT */ 347#endif /* CONFIG_CGROUP_MEM_CONT */
315 348
316#endif /* _LINUX_MEMCONTROL_H */ 349#endif /* _LINUX_MEMCONTROL_H */