Commit 568850ea authored by Chris Phlipot's avatar Chris Phlipot Committed by Arnaldo Carvalho de Melo

perf script: Add call path id to exported sample in db export

The exported sample now contains a reference to the call_path_id that
represents its callchain.

While callchains themselves are nice to have, being able to associate
them with samples makes them much more useful, and can allow for such
things as determining how much cumulative time is spent in a particular
function. This information is normally possible to get from the call
return processor. However, when doing normal sampling, call/return
information is not available, thus necessitating the need for
associating samples directly with call paths.

This commit include changes to db-export layer to make this information
available for subsequent patches in this change set, but by itself, does
not make any changes visible to the user.
Signed-off-by: default avatarChris Phlipot <cphlipot0@gmail.com>
Acked-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1461831551-12213-5-git-send-email-cphlipot0@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 0a3eba3a
...@@ -408,8 +408,10 @@ int db_export__sample(struct db_export *dbe, union perf_event *event, ...@@ -408,8 +408,10 @@ int db_export__sample(struct db_export *dbe, union perf_event *event,
struct call_path *cp = call_path_from_sample(dbe, al->machine, struct call_path *cp = call_path_from_sample(dbe, al->machine,
thread, sample, thread, sample,
evsel); evsel);
if (cp) if (cp) {
db_export__call_path(dbe, cp); db_export__call_path(dbe, cp);
es.call_path_id = cp->db_id;
}
} }
if ((evsel->attr.sample_type & PERF_SAMPLE_ADDR) && if ((evsel->attr.sample_type & PERF_SAMPLE_ADDR) &&
......
...@@ -44,6 +44,7 @@ struct export_sample { ...@@ -44,6 +44,7 @@ struct export_sample {
u64 addr_dso_db_id; u64 addr_dso_db_id;
u64 addr_sym_db_id; u64 addr_sym_db_id;
u64 addr_offset; /* addr offset from symbol start */ u64 addr_offset; /* addr offset from symbol start */
u64 call_path_id;
}; };
struct db_export { struct db_export {
......
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