diff options
author | Pavel Emelianov <xemul@openvz.org> | 2008-02-07 03:13:51 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-07 11:42:18 -0500 |
commit | 78fb74669e80883323391090e4d26d17fe29488f (patch) | |
tree | 9154b703510415ae87bdae8750c1054e79710c61 /include | |
parent | 8cdea7c05454260c0d4d83503949c358eb131d17 (diff) |
Memory controller: accounting setup
Basic setup routines, the mm_struct has a pointer to the cgroup that
it belongs to and the the page has a page_cgroup associated with it.
Signed-off-by: Pavel Emelianov <xemul@openvz.org>
Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com>
Cc: Paul Menage <menage@google.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Kirill Korotaev <dev@sw.ru>
Cc: Herbert Poetzl <herbert@13thfloor.at>
Cc: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/memcontrol.h | 36 | ||||
-rw-r--r-- | include/linux/mm_types.h | 6 | ||||
-rw-r--r-- | include/linux/sched.h | 1 |
3 files changed, 43 insertions, 0 deletions
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 3f121b27677a..7d1f119c796e 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h | |||
@@ -3,6 +3,9 @@ | |||
3 | * Copyright IBM Corporation, 2007 | 3 | * Copyright IBM Corporation, 2007 |
4 | * Author Balbir Singh <balbir@linux.vnet.ibm.com> | 4 | * Author Balbir Singh <balbir@linux.vnet.ibm.com> |
5 | * | 5 | * |
6 | * Copyright 2007 OpenVZ SWsoft Inc | ||
7 | * Author: Pavel Emelianov <xemul@openvz.org> | ||
8 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | 9 | * This program is free software; you can redistribute it and/or modify |
7 | * it under the terms of the GNU General Public License as published by | 10 | * it under the terms of the GNU General Public License as published by |
8 | * the Free Software Foundation; either version 2 of the License, or | 11 | * the Free Software Foundation; either version 2 of the License, or |
@@ -17,5 +20,38 @@ | |||
17 | #ifndef _LINUX_MEMCONTROL_H | 20 | #ifndef _LINUX_MEMCONTROL_H |
18 | #define _LINUX_MEMCONTROL_H | 21 | #define _LINUX_MEMCONTROL_H |
19 | 22 | ||
23 | struct mem_cgroup; | ||
24 | struct page_cgroup; | ||
25 | |||
26 | #ifdef CONFIG_CGROUP_MEM_CONT | ||
27 | |||
28 | extern void mm_init_cgroup(struct mm_struct *mm, struct task_struct *p); | ||
29 | extern void mm_free_cgroup(struct mm_struct *mm); | ||
30 | extern void page_assign_page_cgroup(struct page *page, | ||
31 | struct page_cgroup *pc); | ||
32 | extern struct page_cgroup *page_get_page_cgroup(struct page *page); | ||
33 | |||
34 | #else /* CONFIG_CGROUP_MEM_CONT */ | ||
35 | static inline void mm_init_cgroup(struct mm_struct *mm, | ||
36 | struct task_struct *p) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | static inline void mm_free_cgroup(struct mm_struct *mm) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | static inline void page_assign_page_cgroup(struct page *page, | ||
45 | struct page_cgroup *pc) | ||
46 | { | ||
47 | } | ||
48 | |||
49 | static inline struct page_cgroup *page_get_page_cgroup(struct page *page) | ||
50 | { | ||
51 | return NULL; | ||
52 | } | ||
53 | |||
54 | #endif /* CONFIG_CGROUP_MEM_CONT */ | ||
55 | |||
20 | #endif /* _LINUX_MEMCONTROL_H */ | 56 | #endif /* _LINUX_MEMCONTROL_H */ |
21 | 57 | ||
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index f4c03e0b355e..34023c65d466 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h | |||
@@ -88,6 +88,9 @@ struct page { | |||
88 | void *virtual; /* Kernel virtual address (NULL if | 88 | void *virtual; /* Kernel virtual address (NULL if |
89 | not kmapped, ie. highmem) */ | 89 | not kmapped, ie. highmem) */ |
90 | #endif /* WANT_PAGE_VIRTUAL */ | 90 | #endif /* WANT_PAGE_VIRTUAL */ |
91 | #ifdef CONFIG_CGROUP_MEM_CONT | ||
92 | unsigned long page_cgroup; | ||
93 | #endif | ||
91 | }; | 94 | }; |
92 | 95 | ||
93 | /* | 96 | /* |
@@ -219,6 +222,9 @@ struct mm_struct { | |||
219 | /* aio bits */ | 222 | /* aio bits */ |
220 | rwlock_t ioctx_list_lock; | 223 | rwlock_t ioctx_list_lock; |
221 | struct kioctx *ioctx_list; | 224 | struct kioctx *ioctx_list; |
225 | #ifdef CONFIG_CGROUP_MEM_CONT | ||
226 | struct mem_cgroup *mem_cgroup; | ||
227 | #endif | ||
222 | }; | 228 | }; |
223 | 229 | ||
224 | #endif /* _LINUX_MM_TYPES_H */ | 230 | #endif /* _LINUX_MM_TYPES_H */ |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 7c8ca05c3cae..8a4812c1c038 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -92,6 +92,7 @@ struct sched_param { | |||
92 | 92 | ||
93 | #include <asm/processor.h> | 93 | #include <asm/processor.h> |
94 | 94 | ||
95 | struct mem_cgroup; | ||
95 | struct exec_domain; | 96 | struct exec_domain; |
96 | struct futex_pi_state; | 97 | struct futex_pi_state; |
97 | struct robust_list_head; | 98 | struct robust_list_head; |