|
@@ -1125,47 +1125,47 @@ 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_tool *tool)
|
|
|
+static void perf_tool__warn_about_errors(const struct perf_tool *tool,
|
|
|
+ const struct events_stats *stats)
|
|
|
{
|
|
|
if (tool->lost == perf_event__process_lost &&
|
|
|
- session->evlist->stats.nr_events[PERF_RECORD_LOST] != 0) {
|
|
|
+ stats->nr_events[PERF_RECORD_LOST] != 0) {
|
|
|
ui__warning("Processed %d events and lost %d chunks!\n\n"
|
|
|
"Check IO/CPU overload!\n\n",
|
|
|
- session->evlist->stats.nr_events[0],
|
|
|
- session->evlist->stats.nr_events[PERF_RECORD_LOST]);
|
|
|
+ stats->nr_events[0],
|
|
|
+ stats->nr_events[PERF_RECORD_LOST]);
|
|
|
}
|
|
|
|
|
|
- if (session->evlist->stats.nr_unknown_events != 0) {
|
|
|
+ if (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->evlist->stats.nr_unknown_events);
|
|
|
+ stats->nr_unknown_events);
|
|
|
}
|
|
|
|
|
|
- if (session->evlist->stats.nr_unknown_id != 0) {
|
|
|
+ if (stats->nr_unknown_id != 0) {
|
|
|
ui__warning("%u samples with id not present in the header\n",
|
|
|
- session->evlist->stats.nr_unknown_id);
|
|
|
+ stats->nr_unknown_id);
|
|
|
}
|
|
|
|
|
|
- if (session->evlist->stats.nr_invalid_chains != 0) {
|
|
|
+ if (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->evlist->stats.nr_invalid_chains,
|
|
|
- session->evlist->stats.nr_events[PERF_RECORD_SAMPLE]);
|
|
|
+ stats->nr_invalid_chains,
|
|
|
+ stats->nr_events[PERF_RECORD_SAMPLE]);
|
|
|
}
|
|
|
|
|
|
- if (session->evlist->stats.nr_unprocessable_samples != 0) {
|
|
|
+ if (stats->nr_unprocessable_samples != 0) {
|
|
|
ui__warning("%u unprocessable samples recorded.\n"
|
|
|
"Do you have a KVM guest running and not using 'perf kvm'?\n",
|
|
|
- session->evlist->stats.nr_unprocessable_samples);
|
|
|
+ stats->nr_unprocessable_samples);
|
|
|
}
|
|
|
|
|
|
- if (session->evlist->stats.nr_unordered_events != 0)
|
|
|
- ui__warning("%u out of order events recorded.\n", session->evlist->stats.nr_unordered_events);
|
|
|
+ if (stats->nr_unordered_events != 0)
|
|
|
+ ui__warning("%u out of order events recorded.\n", stats->nr_unordered_events);
|
|
|
}
|
|
|
|
|
|
volatile int session_done;
|
|
@@ -1255,7 +1255,7 @@ done:
|
|
|
err = ordered_events__flush(session, tool, OE_FLUSH__FINAL);
|
|
|
out_err:
|
|
|
free(buf);
|
|
|
- perf_session__warn_about_errors(session, tool);
|
|
|
+ perf_tool__warn_about_errors(tool, &session->evlist->stats);
|
|
|
ordered_events__free(&session->ordered_events);
|
|
|
return err;
|
|
|
}
|
|
@@ -1400,7 +1400,7 @@ out:
|
|
|
err = ordered_events__flush(session, tool, OE_FLUSH__FINAL);
|
|
|
out_err:
|
|
|
ui_progress__finish();
|
|
|
- perf_session__warn_about_errors(session, tool);
|
|
|
+ perf_tool__warn_about_errors(tool, &session->evlist->stats);
|
|
|
ordered_events__free(&session->ordered_events);
|
|
|
session->one_mmap = false;
|
|
|
return err;
|