Skip to contentSkip to conversation

perf, cgroup: Fix up for new API

PATCH In review Peter Zijlstra 3 participants 3 messages May 30, 2011 – May 31, 2011 perf events

lore
Share & tools
lore

Peter Zijlstra

author maintainer
#0 lore raw

PATCH 1/1 perf, cgroup: Fix up for new API

Subject: perf, cgroup: Fix up for new API
From: Peter Zijlstra <[email protected]>
Date: Mon May 30 16:48:06 CEST 2011

Ben changed the API but forgot to convert everybody...

Cc Ben Blum <[email protected]>
Cc Stephane Eranian <[email protected]>
---
 kernel/events/core.c |   22 ++++------------------
 1 file changed, 4 insertions(+), 18 deletions(-)
kernel/events/core.c +4 -18
Index: linux-2.6/kernel/events/core.c
===================================================================
@@ -7394,26 +7394,12 @@ static int __perf_cgroup_move(void *info
 	return 0;
 }
 
-static void perf_cgroup_move(struct task_struct *task)
+static void
+perf_cgroup_attach_task(struct cgroup *cgrp, struct task_struct *task)
 {
 	task_function_call(task, __perf_cgroup_move, task);
 }
 
-static void perf_cgroup_attach(struct cgroup_subsys *ss, struct cgroup *cgrp,
-		struct cgroup *old_cgrp, struct task_struct *task,
-		bool threadgroup)
-{
-	perf_cgroup_move(task);
-	if (threadgroup) {
-		struct task_struct *c;
-		rcu_read_lock();
-		list_for_each_entry_rcu(c, &task->thread_group, thread_group) {
-			perf_cgroup_move(c);
-		}
-		rcu_read_unlock();
-	}
-}
-
 static void perf_cgroup_exit(struct cgroup_subsys *ss, struct cgroup *cgrp,
 		struct cgroup *old_cgrp, struct task_struct *task)
 {
@@ -7425,7 +7411,7 @@ static void perf_cgroup_exit(struct cgro
 	if (!(task->flags & PF_EXITING))
 		return;
 
-	perf_cgroup_move(task);
+	perf_cgroup_attach_task(cgrp, task);
 }
 
 struct cgroup_subsys perf_subsys = {
@@ -7434,6 +7420,6 @@ struct cgroup_subsys perf_subsys = {
 	.create		= perf_cgroup_create,
 	.destroy	= perf_cgroup_destroy,
 	.exit		= perf_cgroup_exit,
-	.attach		= perf_cgroup_attach,
+	.attach_task	= perf_cgroup_attach_task,
 };
 #endif /* CONFIG_CGROUP_PERF */
Acked-by on v1 1/1
#1 lore raw
Quoted 9 lines · Peter Zijlstra

Subject: perf, cgroup: Fix up for new API
From: Peter Zijlstra <[email protected]>
Date: Mon May 30 16:48:06 CEST 2011

Ben changed the API but forgot to convert everybody...

Cc Ben Blum <[email protected]>
Cc Stephane Eranian <[email protected]>

Oops - I guess I missed the new subsystem when I refreshed against 2.6.39. This looks good to me.

Quoted 56 lines
---
 kernel/events/core.c |   22 ++++------------------
 1 file changed, 4 insertions(+), 18 deletions(-)

Index: linux-2.6/kernel/events/core.c
===================================================================

kernel/events/core.c +4 -18
@@ -7394,26 +7394,12 @@ static int __perf_cgroup_move(void *info
 	return 0;
 }
 
-static void perf_cgroup_move(struct task_struct *task)
+static void
+perf_cgroup_attach_task(struct cgroup *cgrp, struct task_struct *task)
 {
 	task_function_call(task, __perf_cgroup_move, task);
 }
 
-static void perf_cgroup_attach(struct cgroup_subsys *ss, struct cgroup *cgrp,
-		struct cgroup *old_cgrp, struct task_struct *task,
-		bool threadgroup)
-{
-	perf_cgroup_move(task);
-	if (threadgroup) {
-		struct task_struct *c;
-		rcu_read_lock();
-		list_for_each_entry_rcu(c, &task->thread_group, thread_group) {
-			perf_cgroup_move(c);
-		}
-		rcu_read_unlock();
-	}
-}
-
 static void perf_cgroup_exit(struct cgroup_subsys *ss, struct cgroup *cgrp,
 		struct cgroup *old_cgrp, struct task_struct *task)
 {
@@ -7425,7 +7411,7 @@ static void perf_cgroup_exit(struct cgro
 	if (!(task->flags & PF_EXITING))
 		return;
 
-	perf_cgroup_move(task);
+	perf_cgroup_attach_task(cgrp, task);
 }
 
 struct cgroup_subsys perf_subsys = {
@@ -7434,6 +7420,6 @@ struct cgroup_subsys perf_subsys = {
 	.create		= perf_cgroup_create,
 	.destroy	= perf_cgroup_destroy,
 	.exit		= perf_cgroup_exit,
-	.attach		= perf_cgroup_attach,
+	.attach_task	= perf_cgroup_attach_task,
 };
 #endif /* CONFIG_CGROUP_PERF */
#2 lore raw

[tip:perf/urgent] perf, cgroups: Fix up for new API

In reply to Peter Zijlstra
Commit-ID:  74c355fbdfedd3820046dba4f537876cea54c207
Gitweb:     http://git.kernel.org/tip/74c355fbdfedd3820046dba4f537876cea54c207
Author:     Peter Zijlstra <[email protected]>
AuthorDate: Mon, 30 May 2011 16:48:06 +0200
Committer:  Ingo Molnar <[email protected]>
CommitDate: Tue, 31 May 2011 14:20:25 +0200

perf, cgroups: Fix up for new API

Ben changed the cgroup API in commit f780bdb7c1c (cgroups: add per-thread subsystem callbacks) in an incompatible way, but forgot to convert the perf cgroup bits.

Avoid compile warnings and runtime splats and convert perf too ;-)

---
 kernel/events/core.c |   22 ++++------------------
 1 files changed, 4 insertions(+), 18 deletions(-)
kernel/events/core.c +4 -18
index c09767f..8a15944 100644
@@ -7394,26 +7394,12 @@ static int __perf_cgroup_move(void *info)
 	return 0;
 }
 
-static void perf_cgroup_move(struct task_struct *task)
+static void
+perf_cgroup_attach_task(struct cgroup *cgrp, struct task_struct *task)
 {
 	task_function_call(task, __perf_cgroup_move, task);
 }
 
-static void perf_cgroup_attach(struct cgroup_subsys *ss, struct cgroup *cgrp,
-		struct cgroup *old_cgrp, struct task_struct *task,
-		bool threadgroup)
-{
-	perf_cgroup_move(task);
-	if (threadgroup) {
-		struct task_struct *c;
-		rcu_read_lock();
-		list_for_each_entry_rcu(c, &task->thread_group, thread_group) {
-			perf_cgroup_move(c);
-		}
-		rcu_read_unlock();
-	}
-}
-
 static void perf_cgroup_exit(struct cgroup_subsys *ss, struct cgroup *cgrp,
 		struct cgroup *old_cgrp, struct task_struct *task)
 {
@@ -7425,7 +7411,7 @@ static void perf_cgroup_exit(struct cgroup_subsys *ss, struct cgroup *cgrp,
 	if (!(task->flags & PF_EXITING))
 		return;
 
-	perf_cgroup_move(task);
+	perf_cgroup_attach_task(cgrp, task);
 }
 
 struct cgroup_subsys perf_subsys = {
@@ -7434,6 +7420,6 @@ struct cgroup_subsys perf_subsys = {
 	.create		= perf_cgroup_create,
 	.destroy	= perf_cgroup_destroy,
 	.exit		= perf_cgroup_exit,
-	.attach		= perf_cgroup_attach,
+	.attach_task	= perf_cgroup_attach_task,
 };
 #endif /* CONFIG_CGROUP_PERF */