aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-record.c
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@redhat.com>2012-11-12 12:34:02 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2012-11-14 14:52:09 -0500
commit2711926a416733b853977a0e014c713955ad0d8a (patch)
tree2842a9fff2adf57094876826b1a580a6b64a9926 /tools/perf/builtin-record.c
parent774cb499ca9ab0e5950a149d1fe102b125da1cee (diff)
perf tools: Ensure single disable call per event in record comand
It's possible we issue the event disable ioctl multiple times until we read the final portion of the mmap buffer. Ensuring just single disable ioctl call for event, because there's no need to do that more than once. Signed-off-by: Jiri Olsa <jolsa@redhat.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1352741644-16809-4-git-send-email-jolsa@redhat.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.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 268b356391fc..f3151d3c70ce 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -502,6 +502,7 @@ static int __cmd_record(struct perf_record *rec, int argc, const char **argv)
502 struct perf_evlist *evsel_list = rec->evlist; 502 struct perf_evlist *evsel_list = rec->evlist;
503 const char *output_name = rec->output_name; 503 const char *output_name = rec->output_name;
504 struct perf_session *session; 504 struct perf_session *session;
505 bool disabled = false;
505 506
506 rec->progname = argv[0]; 507 rec->progname = argv[0];
507 508
@@ -735,8 +736,10 @@ static int __cmd_record(struct perf_record *rec, int argc, const char **argv)
735 * die with the process and we wait for that. Thus no need to 736 * die with the process and we wait for that. Thus no need to
736 * disable events in this case. 737 * disable events in this case.
737 */ 738 */
738 if (done && !perf_target__none(&opts->target)) 739 if (done && !disabled && !perf_target__none(&opts->target)) {
739 perf_evlist__disable(evsel_list); 740 perf_evlist__disable(evsel_list);
741 disabled = true;
742 }
740 } 743 }
741 744
742 if (quiet || signr == SIGUSR1) 745 if (quiet || signr == SIGUSR1)