These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / tools / perf / util / annotate.h
index cadbdc9..cea323d 100644 (file)
@@ -59,6 +59,8 @@ struct disasm_line {
        char                *name;
        struct ins          *ins;
        int                 line_nr;
+       float               ipc;
+       u64                 cycles;
        struct ins_operands ops;
 };
 
@@ -72,23 +74,35 @@ struct disasm_line *disasm__get_next_ip_line(struct list_head *head, struct disa
 int disasm_line__scnprintf(struct disasm_line *dl, char *bf, size_t size, bool raw);
 size_t disasm__fprintf(struct list_head *head, FILE *fp);
 double disasm__calc_percent(struct annotation *notes, int evidx, s64 offset,
-                           s64 end, const char **path);
+                           s64 end, const char **path, u64 *nr_samples);
 
 struct sym_hist {
        u64             sum;
        u64             addr[0];
 };
 
-struct source_line_percent {
+struct cyc_hist {
+       u64     start;
+       u64     cycles;
+       u64     cycles_aggr;
+       u32     num;
+       u32     num_aggr;
+       u8      have_start;
+       /* 1 byte padding */
+       u16     reset;
+};
+
+struct source_line_samples {
        double          percent;
        double          percent_sum;
+       double          nr;
 };
 
 struct source_line {
        struct rb_node  node;
        char            *path;
        int             nr_pcnt;
-       struct source_line_percent p[1];
+       struct source_line_samples samples[1];
 };
 
 /** struct annotated_source - symbols with hits have this attached as in sannotation
@@ -96,6 +110,7 @@ struct source_line {
  * @histogram: Array of addr hit histograms per event being monitored
  * @lines: If 'print_lines' is specified, per source code line percentages
  * @source: source parsed from a disassembler like objdump -dS
+ * @cyc_hist: Average cycles per basic block
  *
  * lines is allocated, percentages calculated and all sorted by percentage
  * when the annotation is about to be presented, so the percentages are for
@@ -107,7 +122,8 @@ struct annotated_source {
        struct list_head   source;
        struct source_line *lines;
        int                nr_histograms;
-       int                sizeof_sym_hist;
+       size_t             sizeof_sym_hist;
+       struct cyc_hist    *cycles_hist;
        struct sym_hist    histograms[0];
 };
 
@@ -129,6 +145,10 @@ static inline struct annotation *symbol__annotation(struct symbol *sym)
 
 int addr_map_symbol__inc_samples(struct addr_map_symbol *ams, int evidx);
 
+int addr_map_symbol__account_cycles(struct addr_map_symbol *ams,
+                                   struct addr_map_symbol *start,
+                                   unsigned cycles);
+
 int hist_entry__inc_addr_samples(struct hist_entry *he, int evidx, u64 addr);
 
 int symbol__alloc_hist(struct symbol *sym);