These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / tools / perf / util / sort.h
index 846036a..3122885 100644 (file)
@@ -34,6 +34,7 @@ extern int have_ignore_callees;
 extern int sort__need_collapse;
 extern int sort__has_parent;
 extern int sort__has_sym;
+extern int sort__has_socket;
 extern enum sort_mode sort__mode;
 extern struct sort_entry sort_comm;
 extern struct sort_entry sort_dso;
@@ -58,15 +59,16 @@ struct he_stat {
 
 struct hist_entry_diff {
        bool    computed;
+       union {
+               /* PERF_HPP__DELTA */
+               double  period_ratio_delta;
 
-       /* PERF_HPP__DELTA */
-       double  period_ratio_delta;
-
-       /* PERF_HPP__RATIO */
-       double  period_ratio;
+               /* PERF_HPP__RATIO */
+               double  period_ratio;
 
-       /* HISTC_WEIGHTED_DIFF */
-       s64     wdiff;
+               /* HISTC_WEIGHTED_DIFF */
+               s64     wdiff;
+       };
 };
 
 /**
@@ -89,24 +91,33 @@ struct hist_entry {
        struct comm             *comm;
        u64                     ip;
        u64                     transaction;
+       s32                     socket;
        s32                     cpu;
        u8                      cpumode;
 
-       struct hist_entry_diff  diff;
-
        /* We are added by hists__add_dummy_entry. */
        bool                    dummy;
 
-       /* XXX These two should move to some tree widget lib */
-       u16                     row_offset;
-       u16                     nr_rows;
-
-       bool                    init_have_children;
        char                    level;
        u8                      filtered;
+       union {
+               /*
+                * Since perf diff only supports the stdio output, TUI
+                * fields are only accessed from perf report (or perf
+                * top).  So make it an union to reduce memory usage.
+                */
+               struct hist_entry_diff  diff;
+               struct /* for TUI */ {
+                       u16     row_offset;
+                       u16     nr_rows;
+                       bool    init_have_children;
+                       bool    unfolded;
+                       bool    has_children;
+               };
+       };
        char                    *srcline;
+       char                    *srcfile;
        struct symbol           *parent;
-       unsigned long           position;
        struct rb_root          sorted_chain;
        struct branch_info      *branch_info;
        struct hists            *hists;
@@ -163,7 +174,9 @@ enum sort_type {
        SORT_SYM,
        SORT_PARENT,
        SORT_CPU,
+       SORT_SOCKET,
        SORT_SRCLINE,
+       SORT_SRCFILE,
        SORT_LOCAL_WEIGHT,
        SORT_GLOBAL_WEIGHT,
        SORT_TRANSACTION,
@@ -177,6 +190,7 @@ enum sort_type {
        SORT_MISPREDICT,
        SORT_ABORT,
        SORT_IN_TX,
+       SORT_CYCLES,
 
        /* memory mode specific sort keys */
        __SORT_MEMORY_MODE,
@@ -187,6 +201,7 @@ enum sort_type {
        SORT_MEM_LVL,
        SORT_MEM_SNOOP,
        SORT_MEM_DCACHELINE,
+       SORT_MEM_IADDR_SYMBOL,
 };
 
 /*
@@ -219,4 +234,6 @@ void perf_hpp__set_elide(int idx, bool elide);
 int report_parse_ignore_callees_opt(const struct option *opt, const char *arg, int unset);
 
 bool is_strict_order(const char *order);
+
+int hpp_dimension__add_output(unsigned col);
 #endif /* __PERF_SORT_H */