summaryrefslogtreecommitdiffstats
path: root/mm/memcontrol.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2011-12-12 21:12:21 -0500
committerTejun Heo <tj@kernel.org>2011-12-12 21:12:21 -0500
commit2f7ee5691eecb67c8108b92001a85563ea336ac5 (patch)
tree18cf60ea8a463f4a6cd59c68926ba4357ae8ff4c /mm/memcontrol.c
parent134d33737f9015761c3832f6b268fae6274aac7f (diff)
cgroup: introduce cgroup_taskset and use it in subsys->can_attach(), cancel_attach() and attach()
Currently, there's no way to pass multiple tasks to cgroup_subsys methods necessitating the need for separate per-process and per-task methods. This patch introduces cgroup_taskset which can be used to pass multiple tasks and their associated cgroups to cgroup_subsys methods. Three methods - can_attach(), cancel_attach() and attach() - are converted to use cgroup_taskset. This unifies passed parameters so that all methods have access to all information. Conversions in this patchset are identical and don't introduce any behavior change. -v2: documentation updated as per Paul Menage's suggestion. Signed-off-by: Tejun Heo <tj@kernel.org> Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Reviewed-by: Frederic Weisbecker <fweisbec@gmail.com> Acked-by: Paul Menage <paul@paulmenage.org> Acked-by: Li Zefan <lizf@cn.fujitsu.com> Cc: Balbir Singh <bsingharora@gmail.com> Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: James Morris <jmorris@namei.org>
Diffstat (limited to 'mm/memcontrol.c')
-rw-r--r--mm/memcontrol.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 6aff93c98aca..81640e74a709 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -5298,8 +5298,9 @@ static void mem_cgroup_clear_mc(void)
5298 5298
5299static int mem_cgroup_can_attach(struct cgroup_subsys *ss, 5299static int mem_cgroup_can_attach(struct cgroup_subsys *ss,
5300 struct cgroup *cgroup, 5300 struct cgroup *cgroup,
5301 struct task_struct *p) 5301 struct cgroup_taskset *tset)
5302{ 5302{
5303 struct task_struct *p = cgroup_taskset_first(tset);
5303 int ret = 0; 5304 int ret = 0;
5304 struct mem_cgroup *memcg = mem_cgroup_from_cont(cgroup); 5305 struct mem_cgroup *memcg = mem_cgroup_from_cont(cgroup);
5305 5306
@@ -5337,7 +5338,7 @@ static int mem_cgroup_can_attach(struct cgroup_subsys *ss,
5337 5338
5338static void mem_cgroup_cancel_attach(struct cgroup_subsys *ss, 5339static void mem_cgroup_cancel_attach(struct cgroup_subsys *ss,
5339 struct cgroup *cgroup, 5340 struct cgroup *cgroup,
5340 struct task_struct *p) 5341 struct cgroup_taskset *tset)
5341{ 5342{
5342 mem_cgroup_clear_mc(); 5343 mem_cgroup_clear_mc();
5343} 5344}
@@ -5454,9 +5455,9 @@ retry:
5454 5455
5455static void mem_cgroup_move_task(struct cgroup_subsys *ss, 5456static void mem_cgroup_move_task(struct cgroup_subsys *ss,
5456 struct cgroup *cont, 5457 struct cgroup *cont,
5457 struct cgroup *old_cont, 5458 struct cgroup_taskset *tset)
5458 struct task_struct *p)
5459{ 5459{
5460 struct task_struct *p = cgroup_taskset_first(tset);
5460 struct mm_struct *mm = get_task_mm(p); 5461 struct mm_struct *mm = get_task_mm(p);
5461 5462
5462 if (mm) { 5463 if (mm) {
@@ -5471,19 +5472,18 @@ static void mem_cgroup_move_task(struct cgroup_subsys *ss,
5471#else /* !CONFIG_MMU */ 5472#else /* !CONFIG_MMU */
5472static int mem_cgroup_can_attach(struct cgroup_subsys *ss, 5473static int mem_cgroup_can_attach(struct cgroup_subsys *ss,
5473 struct cgroup *cgroup, 5474 struct cgroup *cgroup,
5474 struct task_struct *p) 5475 struct cgroup_taskset *tset)
5475{ 5476{
5476 return 0; 5477 return 0;
5477} 5478}
5478static void mem_cgroup_cancel_attach(struct cgroup_subsys *ss, 5479static void mem_cgroup_cancel_attach(struct cgroup_subsys *ss,
5479 struct cgroup *cgroup, 5480 struct cgroup *cgroup,
5480 struct task_struct *p) 5481 struct cgroup_taskset *tset)
5481{ 5482{
5482} 5483}
5483static void mem_cgroup_move_task(struct cgroup_subsys *ss, 5484static void mem_cgroup_move_task(struct cgroup_subsys *ss,
5484 struct cgroup *cont, 5485 struct cgroup *cont,
5485 struct cgroup *old_cont, 5486 struct cgroup_taskset *tset)
5486 struct task_struct *p)
5487{ 5487{
5488} 5488}
5489#endif 5489#endif