summaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorBen Blum <bblum@andrew.cmu.edu>2011-05-26 19:25:19 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-05-26 20:12:34 -0400
commitf780bdb7c1c73009cb57adcf99ef50027d80bf3c (patch)
treed15668ffcc40a2aaa31723b87cfda0b166f84d57 /mm
parent4714d1d32d97239fb5ae3e10521d3f133a899b66 (diff)
cgroups: add per-thread subsystem callbacks
Add cgroup subsystem callbacks for per-thread attachment in atomic contexts Add can_attach_task(), pre_attach(), and attach_task() as new callbacks for cgroups's subsystem interface. Unlike can_attach and attach, these are for per-thread operations, to be called potentially many times when attaching an entire threadgroup. Also, the old "bool threadgroup" interface is removed, as replaced by this. All subsystems are modified for the new interface - of note is cpuset, which requires from/to nodemasks for attach to be globally scoped (though per-cpuset would work too) to persist from its pre_attach to attach_task and attach. This is a pre-patch for cgroup-procs-writable.patch. Signed-off-by: Ben Blum <bblum@andrew.cmu.edu> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Li Zefan <lizf@cn.fujitsu.com> Cc: Matt Helsley <matthltc@us.ibm.com> Reviewed-by: Paul Menage <menage@google.com> Cc: Oleg Nesterov <oleg@redhat.com> Cc: David Rientjes <rientjes@google.com> Cc: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/memcontrol.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index d5fd3dcd3f2e..fc259926c170 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -4953,8 +4953,7 @@ static void mem_cgroup_clear_mc(void)
4953 4953
4954static int mem_cgroup_can_attach(struct cgroup_subsys *ss, 4954static int mem_cgroup_can_attach(struct cgroup_subsys *ss,
4955 struct cgroup *cgroup, 4955 struct cgroup *cgroup,
4956 struct task_struct *p, 4956 struct task_struct *p)
4957 bool threadgroup)
4958{ 4957{
4959 int ret = 0; 4958 int ret = 0;
4960 struct mem_cgroup *mem = mem_cgroup_from_cont(cgroup); 4959 struct mem_cgroup *mem = mem_cgroup_from_cont(cgroup);
@@ -4993,8 +4992,7 @@ static int mem_cgroup_can_attach(struct cgroup_subsys *ss,
4993 4992
4994static void mem_cgroup_cancel_attach(struct cgroup_subsys *ss, 4993static void mem_cgroup_cancel_attach(struct cgroup_subsys *ss,
4995 struct cgroup *cgroup, 4994 struct cgroup *cgroup,
4996 struct task_struct *p, 4995 struct task_struct *p)
4997 bool threadgroup)
4998{ 4996{
4999 mem_cgroup_clear_mc(); 4997 mem_cgroup_clear_mc();
5000} 4998}
@@ -5112,8 +5110,7 @@ retry:
5112static void mem_cgroup_move_task(struct cgroup_subsys *ss, 5110static void mem_cgroup_move_task(struct cgroup_subsys *ss,
5113 struct cgroup *cont, 5111 struct cgroup *cont,
5114 struct cgroup *old_cont, 5112 struct cgroup *old_cont,
5115 struct task_struct *p, 5113 struct task_struct *p)
5116 bool threadgroup)
5117{ 5114{
5118 struct mm_struct *mm; 5115 struct mm_struct *mm;
5119 5116
@@ -5131,22 +5128,19 @@ static void mem_cgroup_move_task(struct cgroup_subsys *ss,
5131#else /* !CONFIG_MMU */ 5128#else /* !CONFIG_MMU */
5132static int mem_cgroup_can_attach(struct cgroup_subsys *ss, 5129static int mem_cgroup_can_attach(struct cgroup_subsys *ss,
5133 struct cgroup *cgroup, 5130 struct cgroup *cgroup,
5134 struct task_struct *p, 5131 struct task_struct *p)
5135 bool threadgroup)
5136{ 5132{
5137 return 0; 5133 return 0;
5138} 5134}
5139static void mem_cgroup_cancel_attach(struct cgroup_subsys *ss, 5135static void mem_cgroup_cancel_attach(struct cgroup_subsys *ss,
5140 struct cgroup *cgroup, 5136 struct cgroup *cgroup,
5141 struct task_struct *p, 5137 struct task_struct *p)
5142 bool threadgroup)
5143{ 5138{
5144} 5139}
5145static void mem_cgroup_move_task(struct cgroup_subsys *ss, 5140static void mem_cgroup_move_task(struct cgroup_subsys *ss,
5146 struct cgroup *cont, 5141 struct cgroup *cont,
5147 struct cgroup *old_cont, 5142 struct cgroup *old_cont,
5148 struct task_struct *p, 5143 struct task_struct *p)
5149 bool threadgroup)
5150{ 5144{
5151} 5145}
5152#endif 5146#endif