mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-25 11:32:24 +00:00
perf annotate: Split branch stack cycles info from 'struct annotation'
The cycles info is only meaningful when sample has branch stacks. To save the memory for normal cases, move those fields to a new 'struct annotated_branch' and dynamically allocate it when needed. Also move cycles_hist from annotated_source as it's related here. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Cc: Ian Rogers <irogers@google.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: https://lore.kernel.org/r/20231103191907.54531-3-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
de2c7eb59c
commit
b7f87e3259
@@ -271,17 +271,20 @@ struct annotated_source {
|
||||
struct list_head source;
|
||||
int nr_histograms;
|
||||
size_t sizeof_sym_hist;
|
||||
struct cyc_hist *cycles_hist;
|
||||
struct sym_hist *histograms;
|
||||
};
|
||||
|
||||
struct annotated_branch {
|
||||
u64 hit_cycles;
|
||||
u64 hit_insn;
|
||||
unsigned int total_insn;
|
||||
unsigned int cover_insn;
|
||||
struct cyc_hist *cycles_hist;
|
||||
};
|
||||
|
||||
struct LOCKABLE annotation {
|
||||
u64 max_coverage;
|
||||
u64 start;
|
||||
u64 hit_cycles;
|
||||
u64 hit_insn;
|
||||
unsigned int total_insn;
|
||||
unsigned int cover_insn;
|
||||
struct annotation_options *options;
|
||||
struct annotation_line **offsets;
|
||||
int nr_events;
|
||||
@@ -297,8 +300,8 @@ struct LOCKABLE annotation {
|
||||
u8 max_addr;
|
||||
u8 max_ins_name;
|
||||
} widths;
|
||||
bool have_cycles;
|
||||
struct annotated_source *src;
|
||||
struct annotated_branch *branch;
|
||||
};
|
||||
|
||||
static inline void annotation__init(struct annotation *notes __maybe_unused)
|
||||
@@ -312,10 +315,10 @@ bool annotation__trylock(struct annotation *notes) EXCLUSIVE_TRYLOCK_FUNCTION(tr
|
||||
|
||||
static inline int annotation__cycles_width(struct annotation *notes)
|
||||
{
|
||||
if (notes->have_cycles && notes->options->show_minmax_cycle)
|
||||
if (notes->branch && notes->options->show_minmax_cycle)
|
||||
return ANNOTATION__IPC_WIDTH + ANNOTATION__MINMAX_CYCLES_WIDTH;
|
||||
|
||||
return notes->have_cycles ? ANNOTATION__IPC_WIDTH + ANNOTATION__CYCLES_WIDTH : 0;
|
||||
return notes->branch ? ANNOTATION__IPC_WIDTH + ANNOTATION__CYCLES_WIDTH : 0;
|
||||
}
|
||||
|
||||
static inline int annotation__pcnt_width(struct annotation *notes)
|
||||
|
||||
Reference in New Issue
Block a user