]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
perf script: Add call path id to exported sample in db export
authorChris Phlipot <cphlipot0@gmail.com>
Thu, 28 Apr 2016 08:19:09 +0000 (01:19 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 6 May 2016 16:00:53 +0000 (13:00 -0300)
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: Chris Phlipot <cphlipot0@gmail.com>
Acked-by: Adrian 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.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/db-export.c
tools/perf/util/db-export.h

index a0ca90c1fb501a98e12dd8831ea6e71501a434a0..f8e3057ae3b1903ff7c15f605d0319486c957b30 100644 (file)
@@ -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,
                                                             thread, sample,
                                                             evsel);
-               if (cp)
+               if (cp) {
                        db_export__call_path(dbe, cp);
+                       es.call_path_id = cp->db_id;
+               }
        }
 
        if ((evsel->attr.sample_type & PERF_SAMPLE_ADDR) &&
index f5daf552054cac1e296058cd431553130f7a567f..67bc6b8ad2d6ecc42519e980a66e78e71da108ab 100644 (file)
@@ -44,6 +44,7 @@ struct export_sample {
        u64                     addr_dso_db_id;
        u64                     addr_sym_db_id;
        u64                     addr_offset; /* addr offset from symbol start */
+       u64                     call_path_id;
 };
 
 struct db_export {