perf tool: Add hpp interface to enable/disable hpp column
authorJiri Olsa <jolsa@redhat.com>
Thu, 4 Oct 2012 12:49:39 +0000 (21:49 +0900)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 4 Oct 2012 16:30:27 +0000 (13:30 -0300)
Adding perf_hpp__column_enable function to enable/disable hists column
and removing diff command specific stuff 'need_pair and
show_displacement' from hpp code.

The diff command now enables/disables columns separately according to
the user arguments. This will be helpful in future patches where more
columns are added into diff output.

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1349354994-17853-6-git-send-email-namhyung@kernel.org
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-diff.c
tools/perf/builtin-report.c
tools/perf/ui/browsers/hists.c
tools/perf/ui/gtk/browser.c
tools/perf/ui/hist.c
tools/perf/ui/setup.c
tools/perf/util/hist.h

index 413c65a1ba391bbb6d757372756c7e6864b921eb..a0b531c14b974f24cbbd2727a879c59c69415e06 100644 (file)
@@ -256,6 +256,21 @@ static const struct option options[] = {
        OPT_END()
 };
 
+static void ui_init(void)
+{
+       perf_hpp__init();
+
+       /* No overhead column. */
+       perf_hpp__column_enable(PERF_HPP__OVERHEAD, false);
+
+       /* Display baseline/delta/displacement columns. */
+       perf_hpp__column_enable(PERF_HPP__BASELINE, true);
+       perf_hpp__column_enable(PERF_HPP__DELTA, true);
+
+       if (show_displacement)
+               perf_hpp__column_enable(PERF_HPP__DISPL, true);
+}
+
 int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused)
 {
        sort_order = diff__default_sort_order;
@@ -278,7 +293,8 @@ int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused)
        if (symbol__init() < 0)
                return -1;
 
-       perf_hpp__init(true, show_displacement);
+       ui_init();
+
        setup_sorting(diff_usage, options);
        setup_pager();
 
index 95e7ea879b8a4f32bd52b7bcc3b295220e0a6510..a61725d89d3ee4188dbe7c4b542c6e1f3685d506 100644 (file)
@@ -691,7 +691,7 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
                setup_browser(true);
        else {
                use_browser = 0;
-               perf_hpp__init(false, false);
+               perf_hpp__init();
        }
 
        setup_sorting(report_usage, options);
index a21f40bebbaced57a7862fb67dec5753f6249497..bbd11c2f69db6743164328b782d0983b66bf67fd 100644 (file)
@@ -584,7 +584,7 @@ HPP__COLOR_FN(overhead_guest_us, period_guest_us)
 
 void hist_browser__init_hpp(void)
 {
-       perf_hpp__init(false, false);
+       perf_hpp__init();
 
        perf_hpp__format[PERF_HPP__OVERHEAD].color =
                                hist_browser__hpp_color_overhead;
index 7ff99ec1d95e9e15dccd4d787192d1a23cb3dc97..2bc08f6af714e0528756c0558ec0dcc9b066424d 100644 (file)
@@ -73,7 +73,7 @@ HPP__COLOR_FN(overhead_guest_us, period_guest_us)
 
 void perf_gtk__init_hpp(void)
 {
-       perf_hpp__init(false, false);
+       perf_hpp__init();
 
        perf_hpp__format[PERF_HPP__OVERHEAD].color =
                                perf_gtk__hpp_color_overhead;
index 6b0138e5f3321c11a438bd37ac60aec816d458fb..e8853f7780a3782adc200a8dfe856e2bad3c3c36 100644 (file)
@@ -302,7 +302,7 @@ struct perf_hpp_fmt perf_hpp__format[] = {
 #undef HPP__COLOR_PRINT_FNS
 #undef HPP__PRINT_FNS
 
-void perf_hpp__init(bool need_pair, bool show_displacement)
+void perf_hpp__init(void)
 {
        if (symbol_conf.show_cpu_utilization) {
                perf_hpp__format[PERF_HPP__OVERHEAD_SYS].cond = true;
@@ -319,15 +319,12 @@ void perf_hpp__init(bool need_pair, bool show_displacement)
 
        if (symbol_conf.show_total_period)
                perf_hpp__format[PERF_HPP__PERIOD].cond = true;
+}
 
-       if (need_pair) {
-               perf_hpp__format[PERF_HPP__OVERHEAD].cond = false;
-               perf_hpp__format[PERF_HPP__BASELINE].cond = true;
-               perf_hpp__format[PERF_HPP__DELTA].cond = true;
-
-               if (show_displacement)
-                       perf_hpp__format[PERF_HPP__DISPL].cond = true;
-       }
+void perf_hpp__column_enable(unsigned col, bool enable)
+{
+       BUG_ON(col >= PERF_HPP__MAX_INDEX);
+       perf_hpp__format[col].cond = enable;
 }
 
 static inline void advance_hpp(struct perf_hpp *hpp, int inc)
index bd7d460f844c2cb4d4035076a2a8bca6a864de60..ebb4cc10787625aca596f6a41a14d56efd9e60d8 100644 (file)
@@ -30,7 +30,7 @@ void setup_browser(bool fallback_to_pager)
                if (fallback_to_pager)
                        setup_pager();
 
-               perf_hpp__init(false, false);
+               perf_hpp__init();
                break;
        }
 }
index b83a2268b5d28e0ed7d48a1c1e84995ae9c1065d..a7f69d69dc661143b5cc4689ec9303ba362a1570 100644 (file)
@@ -147,7 +147,8 @@ enum {
        PERF_HPP__MAX_INDEX
 };
 
-void perf_hpp__init(bool need_pair, bool show_displacement);
+void perf_hpp__init(void);
+void perf_hpp__column_enable(unsigned col, bool enable);
 int hist_entry__period_snprintf(struct perf_hpp *hpp, struct hist_entry *he,
                                bool color);