aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-record.c
diff options
context:
space:
mode:
authorStephane Eranian <eranian@google.com>2010-05-12 04:40:01 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2010-05-13 15:39:12 -0400
commit2e6cdf996ba43ce0b090ffbf754f83e17362cd69 (patch)
treebb471a4ae13fa3941612c30c75bead7417084667 /tools/perf/builtin-record.c
parent8a0ecfb8b47dc765fdf460913231876bbc95385e (diff)
perf tools: change event inheritance logic in stat and record
By default, event inheritance across fork and pthread_create was on but the -i option of stat and record, which enabled inheritance, led to believe it was off by default. This patch fixes this logic by inverting the meaning of the -i option. By default inheritance is on whether you attach to a process (-p), a thread (-t) or start a process. If you pass -i, then you turn off inheritance. Turning off inheritance if you don't need it, helps limit perf resource usage as well. The patch also fixes perf stat -t xxxx and perf record -t xxxx which did not start the counters. Acked-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: David S. Miller <davem@davemloft.net> Cc: Frédéric Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> LKML-Reference: <4bea9d2f.d60ce30a.0b5b.08e1@mx.google.com> Signed-off-by: Stephane Eranian <eranian@google.com> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/builtin-record.c')
-rw-r--r--tools/perf/builtin-record.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 6b77b285fe10..0f467cf7aa72 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -54,7 +54,7 @@ static pid_t target_tid = -1;
54static pid_t *all_tids = NULL; 54static pid_t *all_tids = NULL;
55static int thread_num = 0; 55static int thread_num = 0;
56static pid_t child_pid = -1; 56static pid_t child_pid = -1;
57static bool inherit = true; 57static bool no_inherit = false;
58static enum write_mode_t write_mode = WRITE_FORCE; 58static enum write_mode_t write_mode = WRITE_FORCE;
59static bool call_graph = false; 59static bool call_graph = false;
60static bool inherit_stat = false; 60static bool inherit_stat = false;
@@ -298,8 +298,8 @@ static void create_counter(int counter, int cpu)
298 298
299 attr->mmap = track; 299 attr->mmap = track;
300 attr->comm = track; 300 attr->comm = track;
301 attr->inherit = inherit; 301 attr->inherit = !no_inherit;
302 if (target_pid == -1 && !system_wide) { 302 if (target_pid == -1 && target_tid == -1 && !system_wide) {
303 attr->disabled = 1; 303 attr->disabled = 1;
304 attr->enable_on_exec = 1; 304 attr->enable_on_exec = 1;
305 } 305 }
@@ -641,7 +641,7 @@ static int __cmd_record(int argc, const char **argv)
641 close(child_ready_pipe[0]); 641 close(child_ready_pipe[0]);
642 } 642 }
643 643
644 if ((!system_wide && !inherit) || profile_cpu != -1) { 644 if ((!system_wide && no_inherit) || profile_cpu != -1) {
645 open_counters(profile_cpu); 645 open_counters(profile_cpu);
646 } else { 646 } else {
647 nr_cpus = read_cpu_map(); 647 nr_cpus = read_cpu_map();
@@ -821,8 +821,8 @@ static const struct option options[] = {
821 "event period to sample"), 821 "event period to sample"),
822 OPT_STRING('o', "output", &output_name, "file", 822 OPT_STRING('o', "output", &output_name, "file",
823 "output file name"), 823 "output file name"),
824 OPT_BOOLEAN('i', "inherit", &inherit, 824 OPT_BOOLEAN('i', "no-inherit", &no_inherit,
825 "child tasks inherit counters"), 825 "child tasks do not inherit counters"),
826 OPT_INTEGER('F', "freq", &user_freq, 826 OPT_INTEGER('F', "freq", &user_freq,
827 "profile at this frequency"), 827 "profile at this frequency"),
828 OPT_INTEGER('m', "mmap-pages", &mmap_pages, 828 OPT_INTEGER('m', "mmap-pages", &mmap_pages,