aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-stat.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-stat.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-stat.c')
-rw-r--r--tools/perf/builtin-stat.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index e619ac89dff5..ff8c413b7e73 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -72,7 +72,7 @@ static unsigned int nr_cpus = 0;
72static int run_idx = 0; 72static int run_idx = 0;
73 73
74static int run_count = 1; 74static int run_count = 1;
75static bool inherit = true; 75static bool no_inherit = false;
76static bool scale = true; 76static bool scale = true;
77static pid_t target_pid = -1; 77static pid_t target_pid = -1;
78static pid_t target_tid = -1; 78static pid_t target_tid = -1;
@@ -167,8 +167,8 @@ static int create_perf_stat_counter(int counter)
167 ++ncreated; 167 ++ncreated;
168 } 168 }
169 } else { 169 } else {
170 attr->inherit = inherit; 170 attr->inherit = !no_inherit;
171 if (target_pid == -1) { 171 if (target_pid == -1 && target_tid == -1) {
172 attr->disabled = 1; 172 attr->disabled = 1;
173 attr->enable_on_exec = 1; 173 attr->enable_on_exec = 1;
174 } 174 }
@@ -518,8 +518,8 @@ static const struct option options[] = {
518 OPT_CALLBACK('e', "event", NULL, "event", 518 OPT_CALLBACK('e', "event", NULL, "event",
519 "event selector. use 'perf list' to list available events", 519 "event selector. use 'perf list' to list available events",
520 parse_events), 520 parse_events),
521 OPT_BOOLEAN('i', "inherit", &inherit, 521 OPT_BOOLEAN('i', "no-inherit", &no_inherit,
522 "child tasks inherit counters"), 522 "child tasks do not inherit counters"),
523 OPT_INTEGER('p', "pid", &target_pid, 523 OPT_INTEGER('p', "pid", &target_pid,
524 "stat events on existing process id"), 524 "stat events on existing process id"),
525 OPT_INTEGER('t', "tid", &target_tid, 525 OPT_INTEGER('t', "tid", &target_tid,