forked from Minki/linux
perf annotate: Add samples into struct annotation_line
Add samples array into struct annotation_line to hold the annotation data. The data is populated in the following patches. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Andi Kleen <andi@firstfloor.org> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/20171011150158.11895-17-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
f8eb37bd7c
commit
7e304557ea
@ -911,7 +911,14 @@ static struct annotation_line *
|
||||
annotation_line__new(struct annotate_args *args, size_t privsize)
|
||||
{
|
||||
struct annotation_line *al;
|
||||
struct perf_evsel *evsel = args->evsel;
|
||||
size_t size = privsize + sizeof(*al);
|
||||
int nr = 1;
|
||||
|
||||
if (perf_evsel__is_group_event(evsel))
|
||||
nr = evsel->nr_members;
|
||||
|
||||
size += sizeof(al->samples[0]) * nr;
|
||||
|
||||
al = zalloc(size);
|
||||
if (al) {
|
||||
@ -920,6 +927,7 @@ annotation_line__new(struct annotate_args *args, size_t privsize)
|
||||
al->offset = args->offset;
|
||||
al->line = strdup(args->line);
|
||||
al->line_nr = args->line_nr;
|
||||
al->samples_nr = nr;
|
||||
}
|
||||
|
||||
return al;
|
||||
|
@ -59,6 +59,16 @@ bool ins__is_fused(struct arch *arch, const char *ins1, const char *ins2);
|
||||
|
||||
struct annotation;
|
||||
|
||||
struct sym_hist_entry {
|
||||
u64 nr_samples;
|
||||
u64 period;
|
||||
};
|
||||
|
||||
struct annotation_data {
|
||||
double percent;
|
||||
struct sym_hist_entry he;
|
||||
};
|
||||
|
||||
struct annotation_line {
|
||||
struct list_head node;
|
||||
struct rb_node rb_node;
|
||||
@ -68,6 +78,8 @@ struct annotation_line {
|
||||
float ipc;
|
||||
u64 cycles;
|
||||
size_t privsize;
|
||||
int samples_nr;
|
||||
struct annotation_data samples[0];
|
||||
};
|
||||
|
||||
struct disasm_line {
|
||||
@ -88,11 +100,6 @@ static inline bool disasm_line__has_offset(const struct disasm_line *dl)
|
||||
return dl->ops.target.offset_avail;
|
||||
}
|
||||
|
||||
struct sym_hist_entry {
|
||||
u64 nr_samples;
|
||||
u64 period;
|
||||
};
|
||||
|
||||
void disasm_line__free(struct disasm_line *dl);
|
||||
struct annotation_line *
|
||||
annotation_line__next(struct annotation_line *pos, struct list_head *head);
|
||||
|
Loading…
Reference in New Issue
Block a user