aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-trace.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2014-01-14 11:25:12 -0500
committerIngo Molnar <mingo@kernel.org>2014-01-14 11:25:12 -0500
commit197749981e539c1eb5863f417de6dd4e2c02b76c (patch)
treed7c81373a9ea1b833163e9c36d727b1b6ddab067 /tools/perf/builtin-trace.c
parent1341f3e4c0276aae3de6d902c9202265d89fe438 (diff)
parent26f7f9877234e6b9ed87eff4ca450631bafe0182 (diff)
Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
Pull perf tooling updates from Arnaldo Carvalho de Melo: New features: * perf record: Add --initial-delay option (Andi Kleen) * Column colouring improvements in 'diff' (Ramkumar Ramachandra) Fixes: * Don't show counter information when workload fails (Arnaldo Carvalho de Melo) * Fixup leak on error path in parse events test. (Arnaldo Carvalho de Melo) * Fix --delay option in 'stat' man page (Andi Kleen) * Use the DWARF unwind info only if loaded (Jean Pihet): Developer stuff: * Improve forked workload error reporting by sending the errno in the signal data queueing integer field, using sigqueue and by doing the signal setup in the evlist methods, removing open coded equivalents in various tools. (Arnaldo Carvalho de Melo) * Do more auto exit cleanup shores in the 'evlist' destructor, so that the tools don't have to all do that sequence. (Arnaldo Carvalho de Melo) * Pack 'struct perf_session_env' and 'struct trace' (Arnaldo Carvalho de Melo) * Include tools/lib/api/ in MANIFEST, fixing detached tarballs (Arnaldo Carvalho de Melo) * Add test for building detached source tarballs (Arnaldo Carvalho de Melo) * Shut up libtracevent plugins make message (Jiri Olsa) * Fix installation tests path setup (Jiri Olsa) * Fix id_hdr_size initialization (Jiri Olsa) * Move some header files from tools/perf/ to tools/include/ to make them available to other tools/ dwelling codebases (Namhyung Kim) * Fix 'probe' build when DWARF support libraries not present (Arnaldo Carvalho de Melo) Refactorings: * Move logic to warn about kptr_restrict'ed kernels to separate function in 'report' (Arnaldo Carvalho de Melo) * Move hist browser selection code to separate function (Arnaldo Carvalho de Melo) * Move histogram entries collapsing to separate function (Arnaldo Carvalho de Melo) * Introduce evlist__for_each() & friends (Arnaldo Carvalho de Melo) * Automate setup of FEATURE_CHECK_(C|LD)FLAGS-all variables (Jiri Olsa) * Move arch setup into seprate Makefile (Jiri Olsa) Trivial stuff: * Remove misplaced __maybe_unused in 'stat' (Arnaldo Carvalho de Melo) * Remove old evsel_list usage in 'record' (Arnaldo Carvalho de Melo) * Comment typo fix (Cody P Schafer) * Remove unused test-volatile-register-var.c (Yann Droneaud) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'tools/perf/builtin-trace.c')
-rw-r--r--tools/perf/builtin-trace.c30
1 files changed, 13 insertions, 17 deletions
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index c5b4bc51175c..4bd44aba343e 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -1160,26 +1160,27 @@ struct trace {
1160 struct record_opts opts; 1160 struct record_opts opts;
1161 struct machine *host; 1161 struct machine *host;
1162 u64 base_time; 1162 u64 base_time;
1163 bool full_time;
1164 FILE *output; 1163 FILE *output;
1165 unsigned long nr_events; 1164 unsigned long nr_events;
1166 struct strlist *ev_qualifier; 1165 struct strlist *ev_qualifier;
1167 bool not_ev_qualifier;
1168 bool live;
1169 const char *last_vfs_getname; 1166 const char *last_vfs_getname;
1170 struct intlist *tid_list; 1167 struct intlist *tid_list;
1171 struct intlist *pid_list; 1168 struct intlist *pid_list;
1169 double duration_filter;
1170 double runtime_ms;
1171 struct {
1172 u64 vfs_getname,
1173 proc_getname;
1174 } stats;
1175 bool not_ev_qualifier;
1176 bool live;
1177 bool full_time;
1172 bool sched; 1178 bool sched;
1173 bool multiple_threads; 1179 bool multiple_threads;
1174 bool summary; 1180 bool summary;
1175 bool summary_only; 1181 bool summary_only;
1176 bool show_comm; 1182 bool show_comm;
1177 bool show_tool_stats; 1183 bool show_tool_stats;
1178 double duration_filter;
1179 double runtime_ms;
1180 struct {
1181 u64 vfs_getname, proc_getname;
1182 } stats;
1183}; 1184};
1184 1185
1185static int trace__set_fd_pathname(struct thread *thread, int fd, const char *pathname) 1186static int trace__set_fd_pathname(struct thread *thread, int fd, const char *pathname)
@@ -1885,7 +1886,7 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
1885 err = trace__symbols_init(trace, evlist); 1886 err = trace__symbols_init(trace, evlist);
1886 if (err < 0) { 1887 if (err < 0) {
1887 fprintf(trace->output, "Problems initializing symbol libraries!\n"); 1888 fprintf(trace->output, "Problems initializing symbol libraries!\n");
1888 goto out_delete_maps; 1889 goto out_delete_evlist;
1889 } 1890 }
1890 1891
1891 perf_evlist__config(evlist, &trace->opts); 1892 perf_evlist__config(evlist, &trace->opts);
@@ -1895,10 +1896,10 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
1895 1896
1896 if (forks) { 1897 if (forks) {
1897 err = perf_evlist__prepare_workload(evlist, &trace->opts.target, 1898 err = perf_evlist__prepare_workload(evlist, &trace->opts.target,
1898 argv, false, false); 1899 argv, false, NULL);
1899 if (err < 0) { 1900 if (err < 0) {
1900 fprintf(trace->output, "Couldn't run the workload!\n"); 1901 fprintf(trace->output, "Couldn't run the workload!\n");
1901 goto out_delete_maps; 1902 goto out_delete_evlist;
1902 } 1903 }
1903 } 1904 }
1904 1905
@@ -1909,7 +1910,7 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
1909 err = perf_evlist__mmap(evlist, trace->opts.mmap_pages, false); 1910 err = perf_evlist__mmap(evlist, trace->opts.mmap_pages, false);
1910 if (err < 0) { 1911 if (err < 0) {
1911 fprintf(trace->output, "Couldn't mmap the events: %s\n", strerror(errno)); 1912 fprintf(trace->output, "Couldn't mmap the events: %s\n", strerror(errno));
1912 goto out_close_evlist; 1913 goto out_delete_evlist;
1913 } 1914 }
1914 1915
1915 perf_evlist__enable(evlist); 1916 perf_evlist__enable(evlist);
@@ -1993,11 +1994,6 @@ out_disable:
1993 } 1994 }
1994 } 1995 }
1995 1996
1996 perf_evlist__munmap(evlist);
1997out_close_evlist:
1998 perf_evlist__close(evlist);
1999out_delete_maps:
2000 perf_evlist__delete_maps(evlist);
2001out_delete_evlist: 1997out_delete_evlist:
2002 perf_evlist__delete(evlist); 1998 perf_evlist__delete(evlist);
2003out: 1999out: