From 1109599458c06256064213dc44ca5f5fa8ee3833 Mon Sep 17 00:00:00 2001 From: Arnaldo Carvalho de Melo Date: Tue, 4 Jan 2011 16:25:15 -0200 Subject: perf session: Warn about errors when processing pipe events too Just like we do at __perf_session__process_events Cc: Frederic Weisbecker Cc: Ingo Molnar Cc: Mike Galbraith Cc: Paul Mackerras Cc: Peter Zijlstra Cc: Stephane Eranian Cc: Tom Zanussi LKML-Reference: Signed-off-by: Arnaldo Carvalho de Melo diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index b163dfd..6fb4694 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c @@ -838,6 +838,35 @@ static struct thread *perf_session__register_idle_thread(struct perf_session *se return thread; } +static void perf_session__warn_about_errors(const struct perf_session *session, + const struct perf_event_ops *ops) +{ + if (ops->lost == event__process_lost && + session->hists.stats.total_lost != 0) { + ui__warning("Processed %Lu events and LOST %Lu!\n\n" + "Check IO/CPU overload!\n\n", + session->hists.stats.total_period, + session->hists.stats.total_lost); + } + + if (session->hists.stats.nr_unknown_events != 0) { + ui__warning("Found %u unknown events!\n\n" + "Is this an older tool processing a perf.data " + "file generated by a more recent tool?\n\n" + "If that is not the case, consider " + "reporting to linux-kernel@vger.kernel.org.\n\n", + session->hists.stats.nr_unknown_events); + } + + if (session->hists.stats.nr_invalid_chains != 0) { + ui__warning("Found invalid callchains!\n\n" + "%u out of %u events were discarded for this reason.\n\n" + "Consider reporting to linux-kernel@vger.kernel.org.\n\n", + session->hists.stats.nr_invalid_chains, + session->hists.stats.nr_events[PERF_RECORD_SAMPLE]); + } +} + #define session_done() (*(volatile int *)(&session_done)) volatile int session_done; @@ -911,6 +940,7 @@ more: done: err = 0; out_err: + perf_session__warn_about_errors(self, ops); perf_session_free_sample_buffers(self); return err; } @@ -1023,32 +1053,7 @@ more: flush_sample_queue(session, ops); out_err: ui_progress__delete(progress); - - if (ops->lost == event__process_lost && - session->hists.stats.total_lost != 0) { - ui__warning("Processed %Lu events and LOST %Lu!\n\n" - "Check IO/CPU overload!\n\n", - session->hists.stats.total_period, - session->hists.stats.total_lost); - } - - if (session->hists.stats.nr_unknown_events != 0) { - ui__warning("Found %u unknown events!\n\n" - "Is this an older tool processing a perf.data " - "file generated by a more recent tool?\n\n" - "If that is not the case, consider " - "reporting to linux-kernel@vger.kernel.org.\n\n", - session->hists.stats.nr_unknown_events); - } - - if (session->hists.stats.nr_invalid_chains != 0) { - ui__warning("Found invalid callchains!\n\n" - "%u out of %u events were discarded for this reason.\n\n" - "Consider reporting to linux-kernel@vger.kernel.org.\n\n", - session->hists.stats.nr_invalid_chains, - session->hists.stats.nr_events[PERF_RECORD_SAMPLE]); - } - + perf_session__warn_about_errors(session, ops); perf_session_free_sample_buffers(session); return err; } -- cgit v0.10.2