};
static int perf_evsel__add_sample(struct perf_evsel *evsel,
- struct perf_sample *sample,
+ struct perf_sample *sample __maybe_unused,
struct addr_location *al,
struct perf_annotate *ann)
{
return -ENOMEM;
ret = hist_entry__inc_addr_samples(he, evsel->idx, al->addr);
- evsel->hists.stats.total_period += sample->period;
hists__inc_nr_events(&evsel->hists, PERF_RECORD_SAMPLE);
return ret;
}
return -1;
}
- if (al.filtered == 0) {
- evsel->hists.stats.total_non_filtered_period += sample->period;
- evsel->hists.nr_non_filtered_entries++;
- }
+ /*
+ * The total_period is updated here before going to the output
+ * tree since normally only the baseline hists will call
+ * hists__output_resort() and precompute needs the total
+ * period in order to sort entries by percentage delta.
+ */
evsel->hists.stats.total_period += sample->period;
+ if (!al.filtered)
+ evsel->hists.stats.total_non_filtered_period += sample->period;
+
return 0;
}
*/
if (he->stat.nr_events == 1)
rep->nr_entries++;
+
+ /*
+ * Only counts number of samples at this stage as it's more
+ * natural to do it here and non-sample events are also
+ * counted in perf_session_deliver_event(). The dump_trace
+ * requires this info is ready before going to the output tree.
+ */
+ hists__inc_nr_events(he->hists, PERF_RECORD_SAMPLE);
+ if (!he->filtered)
+ he->hists->stats.nr_non_filtered_samples++;
}
static int report__add_mem_hist_entry(struct report *rep, struct addr_location *al,
report__inc_stats(rep, he);
- evsel->hists.stats.total_period += cost;
- hists__inc_nr_events(&evsel->hists, PERF_RECORD_SAMPLE);
- if (!he->filtered)
- evsel->hists.stats.nr_non_filtered_samples++;
err = hist_entry__append_callchain(he, sample);
out:
return err;
if (err)
goto out;
}
-
report__inc_stats(rep, he);
-
- evsel->hists.stats.total_period += 1;
- hists__inc_nr_events(&evsel->hists, PERF_RECORD_SAMPLE);
- if (!he->filtered)
- evsel->hists.stats.nr_non_filtered_samples++;
} else
goto out;
}
report__inc_stats(rep, he);
- evsel->hists.stats.total_period += sample->period;
- if (!he->filtered)
- evsel->hists.stats.nr_non_filtered_samples++;
- hists__inc_nr_events(&evsel->hists, PERF_RECORD_SAMPLE);
out:
return err;
}