perf session: Warn about errors when processing pipe events too
authorArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 4 Jan 2011 18:25:15 +0000 (16:25 -0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 5 Jan 2011 16:53:10 +0000 (14:53 -0200)
Just like we do at __perf_session__process_events

Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

tools/perf/util/session.c

index b163dfd..6fb4694 100644 (file)
@@ -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;
 }