diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/memcontrol.h | 53 | ||||
| -rw-r--r-- | include/linux/swap.h | 3 |
2 files changed, 17 insertions, 39 deletions
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index eb65d29516ca..1a9a096858e0 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h | |||
| @@ -54,28 +54,11 @@ struct mem_cgroup_reclaim_cookie { | |||
| 54 | }; | 54 | }; |
| 55 | 55 | ||
| 56 | #ifdef CONFIG_MEMCG | 56 | #ifdef CONFIG_MEMCG |
| 57 | /* | 57 | int mem_cgroup_try_charge(struct page *page, struct mm_struct *mm, |
| 58 | * All "charge" functions with gfp_mask should use GFP_KERNEL or | 58 | gfp_t gfp_mask, struct mem_cgroup **memcgp); |
| 59 | * (gfp_mask & GFP_RECLAIM_MASK). In current implementatin, memcg doesn't | 59 | void mem_cgroup_commit_charge(struct page *page, struct mem_cgroup *memcg, |
| 60 | * alloc memory but reclaims memory from all available zones. So, "where I want | 60 | bool lrucare); |
| 61 | * memory from" bits of gfp_mask has no meaning. So any bits of that field is | 61 | void mem_cgroup_cancel_charge(struct page *page, struct mem_cgroup *memcg); |
| 62 | * available but adding a rule is better. charge functions' gfp_mask should | ||
| 63 | * be set to GFP_KERNEL or gfp_mask & GFP_RECLAIM_MASK for avoiding ambiguous | ||
| 64 | * codes. | ||
| 65 | * (Of course, if memcg does memory allocation in future, GFP_KERNEL is sane.) | ||
| 66 | */ | ||
| 67 | |||
| 68 | extern int mem_cgroup_charge_anon(struct page *page, struct mm_struct *mm, | ||
| 69 | gfp_t gfp_mask); | ||
| 70 | /* for swap handling */ | ||
| 71 | extern int mem_cgroup_try_charge_swapin(struct mm_struct *mm, | ||
| 72 | struct page *page, gfp_t mask, struct mem_cgroup **memcgp); | ||
| 73 | extern void mem_cgroup_commit_charge_swapin(struct page *page, | ||
| 74 | struct mem_cgroup *memcg); | ||
| 75 | extern void mem_cgroup_cancel_charge_swapin(struct mem_cgroup *memcg); | ||
| 76 | |||
| 77 | extern int mem_cgroup_charge_file(struct page *page, struct mm_struct *mm, | ||
| 78 | gfp_t gfp_mask); | ||
| 79 | 62 | ||
| 80 | struct lruvec *mem_cgroup_zone_lruvec(struct zone *, struct mem_cgroup *); | 63 | struct lruvec *mem_cgroup_zone_lruvec(struct zone *, struct mem_cgroup *); |
| 81 | struct lruvec *mem_cgroup_page_lruvec(struct page *, struct zone *); | 64 | struct lruvec *mem_cgroup_page_lruvec(struct page *, struct zone *); |
| @@ -233,30 +216,22 @@ void mem_cgroup_print_bad_page(struct page *page); | |||
| 233 | #else /* CONFIG_MEMCG */ | 216 | #else /* CONFIG_MEMCG */ |
| 234 | struct mem_cgroup; | 217 | struct mem_cgroup; |
| 235 | 218 | ||
| 236 | static inline int mem_cgroup_charge_anon(struct page *page, | 219 | static inline int mem_cgroup_try_charge(struct page *page, struct mm_struct *mm, |
| 237 | struct mm_struct *mm, gfp_t gfp_mask) | 220 | gfp_t gfp_mask, |
| 238 | { | 221 | struct mem_cgroup **memcgp) |
| 239 | return 0; | ||
| 240 | } | ||
| 241 | |||
| 242 | static inline int mem_cgroup_charge_file(struct page *page, | ||
| 243 | struct mm_struct *mm, gfp_t gfp_mask) | ||
| 244 | { | ||
| 245 | return 0; | ||
| 246 | } | ||
| 247 | |||
| 248 | static inline int mem_cgroup_try_charge_swapin(struct mm_struct *mm, | ||
| 249 | struct page *page, gfp_t gfp_mask, struct mem_cgroup **memcgp) | ||
| 250 | { | 222 | { |
| 223 | *memcgp = NULL; | ||
| 251 | return 0; | 224 | return 0; |
| 252 | } | 225 | } |
| 253 | 226 | ||
| 254 | static inline void mem_cgroup_commit_charge_swapin(struct page *page, | 227 | static inline void mem_cgroup_commit_charge(struct page *page, |
| 255 | struct mem_cgroup *memcg) | 228 | struct mem_cgroup *memcg, |
| 229 | bool lrucare) | ||
| 256 | { | 230 | { |
| 257 | } | 231 | } |
| 258 | 232 | ||
| 259 | static inline void mem_cgroup_cancel_charge_swapin(struct mem_cgroup *memcg) | 233 | static inline void mem_cgroup_cancel_charge(struct page *page, |
| 234 | struct mem_cgroup *memcg) | ||
| 260 | { | 235 | { |
| 261 | } | 236 | } |
| 262 | 237 | ||
diff --git a/include/linux/swap.h b/include/linux/swap.h index 1eb64043c076..46a649e4e8cd 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h | |||
| @@ -320,6 +320,9 @@ extern void swap_setup(void); | |||
| 320 | 320 | ||
| 321 | extern void add_page_to_unevictable_list(struct page *page); | 321 | extern void add_page_to_unevictable_list(struct page *page); |
| 322 | 322 | ||
| 323 | extern void lru_cache_add_active_or_unevictable(struct page *page, | ||
| 324 | struct vm_area_struct *vma); | ||
| 325 | |||
| 323 | /* linux/mm/vmscan.c */ | 326 | /* linux/mm/vmscan.c */ |
| 324 | extern unsigned long try_to_free_pages(struct zonelist *zonelist, int order, | 327 | extern unsigned long try_to_free_pages(struct zonelist *zonelist, int order, |
| 325 | gfp_t gfp_mask, nodemask_t *mask); | 328 | gfp_t gfp_mask, nodemask_t *mask); |
