Commit 1844dbcb authored by Namhyung Kim's avatar Namhyung Kim Committed by Jiri Olsa

perf tools: Introduce hists__inc_nr_samples()

There're some duplicate code for counting number of samples.  Add
hists__inc_nr_samples() and reuse it.
Suggested-by: default avatarJiri Olsa <jolsa@kernel.org>
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/1401335910-16832-2-git-send-email-namhyung@kernel.orgSigned-off-by: default avatarJiri Olsa <jolsa@kernel.org>
parent e450f90e
...@@ -70,7 +70,7 @@ static int perf_evsel__add_sample(struct perf_evsel *evsel, ...@@ -70,7 +70,7 @@ static int perf_evsel__add_sample(struct perf_evsel *evsel,
return -ENOMEM; return -ENOMEM;
ret = hist_entry__inc_addr_samples(he, evsel->idx, al->addr); ret = hist_entry__inc_addr_samples(he, evsel->idx, al->addr);
hists__inc_nr_events(&evsel->hists, PERF_RECORD_SAMPLE); hists__inc_nr_samples(&evsel->hists, true);
return ret; return ret;
} }
......
...@@ -92,9 +92,7 @@ static void report__inc_stats(struct report *rep, struct hist_entry *he) ...@@ -92,9 +92,7 @@ static void report__inc_stats(struct report *rep, struct hist_entry *he)
* counted in perf_session_deliver_event(). The dump_trace * counted in perf_session_deliver_event(). The dump_trace
* requires this info is ready before going to the output tree. * requires this info is ready before going to the output tree.
*/ */
hists__inc_nr_events(he->hists, PERF_RECORD_SAMPLE); hists__inc_nr_samples(he->hists, he->filtered);
if (!he->filtered)
he->hists->stats.nr_non_filtered_samples++;
} }
static int report__add_mem_hist_entry(struct report *rep, struct addr_location *al, static int report__add_mem_hist_entry(struct report *rep, struct addr_location *al,
......
...@@ -1428,7 +1428,7 @@ static int perf_sched__process_tracepoint_sample(struct perf_tool *tool __maybe_ ...@@ -1428,7 +1428,7 @@ static int perf_sched__process_tracepoint_sample(struct perf_tool *tool __maybe_
int err = 0; int err = 0;
evsel->hists.stats.total_period += sample->period; evsel->hists.stats.total_period += sample->period;
hists__inc_nr_events(&evsel->hists, PERF_RECORD_SAMPLE); hists__inc_nr_samples(&evsel->hists, true);
if (evsel->handler != NULL) { if (evsel->handler != NULL) {
tracepoint_handler f = evsel->handler; tracepoint_handler f = evsel->handler;
......
...@@ -252,10 +252,7 @@ static struct hist_entry *perf_evsel__add_hist_entry(struct perf_evsel *evsel, ...@@ -252,10 +252,7 @@ static struct hist_entry *perf_evsel__add_hist_entry(struct perf_evsel *evsel,
if (he == NULL) if (he == NULL)
return NULL; return NULL;
hists__inc_nr_events(&evsel->hists, PERF_RECORD_SAMPLE); hists__inc_nr_samples(&evsel->hists, he->filtered);
if (!he->filtered)
evsel->hists.stats.nr_non_filtered_samples++;
return he; return he;
} }
......
...@@ -85,9 +85,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine) ...@@ -85,9 +85,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
fake_samples[i].map = al.map; fake_samples[i].map = al.map;
fake_samples[i].sym = al.sym; fake_samples[i].sym = al.sym;
hists__inc_nr_events(he->hists, PERF_RECORD_SAMPLE); hists__inc_nr_samples(he->hists, he->filtered);
if (!he->filtered)
he->hists->stats.nr_non_filtered_samples++;
} }
} }
......
...@@ -800,6 +800,13 @@ void hists__inc_nr_events(struct hists *hists, u32 type) ...@@ -800,6 +800,13 @@ void hists__inc_nr_events(struct hists *hists, u32 type)
events_stats__inc(&hists->stats, type); events_stats__inc(&hists->stats, type);
} }
void hists__inc_nr_samples(struct hists *hists, bool filtered)
{
events_stats__inc(&hists->stats, PERF_RECORD_SAMPLE);
if (!filtered)
hists->stats.nr_non_filtered_samples++;
}
static struct hist_entry *hists__add_dummy_entry(struct hists *hists, static struct hist_entry *hists__add_dummy_entry(struct hists *hists,
struct hist_entry *pair) struct hist_entry *pair)
{ {
......
...@@ -119,6 +119,7 @@ u64 hists__total_period(struct hists *hists); ...@@ -119,6 +119,7 @@ u64 hists__total_period(struct hists *hists);
void hists__reset_stats(struct hists *hists); void hists__reset_stats(struct hists *hists);
void hists__inc_stats(struct hists *hists, struct hist_entry *h); void hists__inc_stats(struct hists *hists, struct hist_entry *h);
void hists__inc_nr_events(struct hists *hists, u32 type); void hists__inc_nr_events(struct hists *hists, u32 type);
void hists__inc_nr_samples(struct hists *hists, bool filtered);
void events_stats__inc(struct events_stats *stats, u32 type); void events_stats__inc(struct events_stats *stats, u32 type);
size_t events_stats__fprintf(struct events_stats *stats, FILE *fp); size_t events_stats__fprintf(struct events_stats *stats, FILE *fp);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment