All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] perf record: Enable the enable_on_exec flag if record forks the target
@ 2010-03-15 14:46 Arnaldo Carvalho de Melo
  2010-03-15 14:46 ` [PATCH 2/2] perf top: Properly notify the user that vmlinux is missing Arnaldo Carvalho de Melo
  2010-03-15 15:15 ` [tip:perf/core] perf record: Enable the enable_on_exec flag if record forks the target tip-bot for Eric B Munson
  0 siblings, 2 replies; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2010-03-15 14:46 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Eric B Munson, Paul Mackerras,
	Arnaldo Carvalho de Melo

From: Eric B Munson <ebmunson@us.ibm.com>

When forking its target, perf record can capture data from before the target
application is started.  Perf stat uses the enable_on_exec flag in the event
attributes to keep from displaying events from before the target program
starts, this patch adds the same functionality to perf record when it is will
fork the target process.

Signed-off-by: Eric B Munson <ebmunson@us.ibm.com>
Cc: Paul Mackerras <paulus@samba.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-record.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index bed175d..962cdbf 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -225,7 +225,7 @@ static struct perf_header_attr *get_header_attr(struct perf_event_attr *a, int n
 	return h_attr;
 }
 
-static void create_counter(int counter, int cpu, pid_t pid)
+static void create_counter(int counter, int cpu, pid_t pid, bool forks)
 {
 	char *filter = filters[counter];
 	struct perf_event_attr *attr = attrs + counter;
@@ -277,6 +277,9 @@ static void create_counter(int counter, int cpu, pid_t pid)
 	attr->inherit		= inherit;
 	attr->disabled		= 1;
 
+	if (forks)
+		attr->enable_on_exec = 1;
+
 try_again:
 	fd[nr_cpu][counter] = sys_perf_event_open(attr, pid, cpu, group_fd, 0);
 
@@ -381,13 +384,13 @@ try_again:
 	ioctl(fd[nr_cpu][counter], PERF_EVENT_IOC_ENABLE);
 }
 
-static void open_counters(int cpu, pid_t pid)
+static void open_counters(int cpu, pid_t pid, bool forks)
 {
 	int counter;
 
 	group_fd = -1;
 	for (counter = 0; counter < nr_counters; counter++)
-		create_counter(counter, cpu, pid);
+		create_counter(counter, cpu, pid, forks);
 
 	nr_cpu++;
 }
@@ -547,11 +550,11 @@ static int __cmd_record(int argc, const char **argv)
 
 
 	if ((!system_wide && !inherit) || profile_cpu != -1) {
-		open_counters(profile_cpu, target_pid);
+		open_counters(profile_cpu, target_pid, forks);
 	} else {
 		nr_cpus = read_cpu_map();
 		for (i = 0; i < nr_cpus; i++)
-			open_counters(cpumap[i], target_pid);
+			open_counters(cpumap[i], target_pid, forks);
 	}
 
 	if (file_new) {
-- 
1.6.2.5


^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2010-03-16  9:58 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-15 14:46 [PATCH 1/2] perf record: Enable the enable_on_exec flag if record forks the target Arnaldo Carvalho de Melo
2010-03-15 14:46 ` [PATCH 2/2] perf top: Properly notify the user that vmlinux is missing Arnaldo Carvalho de Melo
2010-03-15 18:55   ` David Miller
2010-03-15 19:21     ` Arnaldo Carvalho de Melo
2010-03-15 19:26       ` David Miller
2010-03-16  9:46         ` Ingo Molnar
2010-03-16  9:51           ` David Miller
2010-03-16  9:55             ` Ingo Molnar
2010-03-16  9:58               ` David Miller
2010-03-15 15:15 ` [tip:perf/core] perf record: Enable the enable_on_exec flag if record forks the target tip-bot for Eric B Munson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.