perf hist: Remove dummy entries when finding real ones.
authorArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 9 Aug 2019 20:56:06 +0000 (17:56 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 12 Aug 2019 19:26:02 +0000 (16:26 -0300)
commit5f8b4d5d237a3e2e35509da4e63769ae5c82c085
tree8aac4e81b256b69c82b108ee5b77be429da5119e
parent3e70008a6021fffd2cd1614734603ea970773060
perf hist: Remove dummy entries when finding real ones.

When he have an event group we have multiple struct hist instances, one
per evsel, and in each of these hists we may have hist_entries that
point to the same thing being observed, say a symbol, i.e. if we're
looking at instructions and cycles, then we'll have one hist_entry in
the "instructions" evsel and another in the "cycles" evsel.

We need to link those to then show one column for each. When we're
looking at some other pair of events, say instructions and cache misses,
we may have just the "instructions" hist entry and not one for "cache
misses", as instructions not necessarily generate cache misses, as the
logic expects one hist_entry per evsel, we end up adding "dummy"
hist_entries.

This is enough for 'perf report', that does this matching operation
(hists__match()) just once after processing all events, but for 'perf
top', we do this at each refresh, so we may finally find events matching
and then we need to trow away the dummies and link with the real events.

So if we find a match, traverse the link of matches and trow away
dummies for that hists.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lkml.kernel.org/n/tip-dwvtjqqifsbsczeb35q6mqkk@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/hist.c