perf report: Show branch type in callchain entry
Show branch type in callchain entry. The branch type is printed with other LBR information (such as cycles/abort/...). For example: perf record -g -j any,save_type perf report --branch-history --stdio --no-children 38.50% div.c:45 [.] main div | ---main div.c:42 (RET CROSS_2M cycles:2) compute_flag div.c:28 (cycles:2) compute_flag div.c:27 (RET CROSS_2M cycles:1) rand rand.c:28 (cycles:1) rand rand.c:28 (RET CROSS_2M cycles:1) __random random.c:298 (cycles:1) __random random.c:297 (COND_BWD CROSS_2M cycles:1) __random random.c:295 (cycles:1) __random random.c:295 (COND_BWD CROSS_2M cycles:1) __random random.c:295 (cycles:1) __random random.c:295 (RET CROSS_2M cycles:9) Change log v6: Remove the branch_type_str() since it's moved to branch.c. v5: Rewrite the branch info print code in util/callchain.c. v4: Comparing to previous version, the major changes are: Signed-off-by: Yao Jin <yao.jin@linux.intel.com> Acked-by: Jiri Olsa <jolsa@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Kan Liang <kan.liang@intel.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1500379995-6449-8-git-send-email-yao.jin@linux.intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:

committed by
Arnaldo Carvalho de Melo

parent
2d78b18952
commit
b851dd4986
@@ -7,6 +7,7 @@
|
||||
#include "event.h"
|
||||
#include "map.h"
|
||||
#include "symbol.h"
|
||||
#include "branch.h"
|
||||
|
||||
#define HELP_PAD "\t\t\t\t"
|
||||
|
||||
@@ -119,6 +120,7 @@ struct callchain_list {
|
||||
u64 cycles_count;
|
||||
u64 iter_count;
|
||||
u64 samples_count;
|
||||
struct branch_type_stat brtype_stat;
|
||||
char *srcline;
|
||||
struct list_head list;
|
||||
};
|
||||
@@ -135,6 +137,7 @@ struct callchain_cursor_node {
|
||||
struct symbol *sym;
|
||||
bool branch;
|
||||
struct branch_flags branch_flags;
|
||||
u64 branch_from;
|
||||
int nr_loop_iter;
|
||||
int samples;
|
||||
struct callchain_cursor_node *next;
|
||||
@@ -198,7 +201,7 @@ static inline void callchain_cursor_reset(struct callchain_cursor *cursor)
|
||||
int callchain_cursor_append(struct callchain_cursor *cursor, u64 ip,
|
||||
struct map *map, struct symbol *sym,
|
||||
bool branch, struct branch_flags *flags,
|
||||
int nr_loop_iter, int samples);
|
||||
int nr_loop_iter, int samples, u64 branch_from);
|
||||
|
||||
/* Close a cursor writing session. Initialize for the reader */
|
||||
static inline void callchain_cursor_commit(struct callchain_cursor *cursor)
|
||||
|
Reference in New Issue
Block a user