perf ui/browser: Add support to accumulated hist stat
authorNamhyung Kim <namhyung@kernel.org>
Wed, 30 Oct 2013 07:12:59 +0000 (16:12 +0900)
committerJiri Olsa <jolsa@kernel.org>
Sun, 1 Jun 2014 12:35:01 +0000 (14:35 +0200)
Print accumulated stat of a hist entry if requested.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arun Sharma <asharma@fb.com>
Tested-by: Rodrigo Campos <rodrigo@sdfg.com.ar>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Link: http://lkml.kernel.org/r/1401335910-16832-12-git-send-email-namhyung@kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
tools/perf/ui/browsers/hists.c

index 1c331b934ffc50747c1b6df0ba6658e81fe8971d..2dcbe3d15a5f34ffc2b8d9eba6c97e4e5831a3d4 100644 (file)
@@ -651,13 +651,36 @@ hist_browser__hpp_color_##_type(struct perf_hpp_fmt *fmt __maybe_unused,\
                          __hpp__slsmg_color_printf, true);             \
 }
 
+#define __HPP_COLOR_ACC_PERCENT_FN(_type, _field)                      \
+static u64 __hpp_get_acc_##_field(struct hist_entry *he)               \
+{                                                                      \
+       return he->stat_acc->_field;                                    \
+}                                                                      \
+                                                                       \
+static int                                                             \
+hist_browser__hpp_color_##_type(struct perf_hpp_fmt *fmt __maybe_unused,\
+                               struct perf_hpp *hpp,                   \
+                               struct hist_entry *he)                  \
+{                                                                      \
+       if (!symbol_conf.cumulate_callchain) {                          \
+               int ret = scnprintf(hpp->buf, hpp->size, "%8s", "N/A"); \
+               slsmg_printf("%s", hpp->buf);                           \
+                                                                       \
+               return ret;                                             \
+       }                                                               \
+       return __hpp__fmt(hpp, he, __hpp_get_acc_##_field, " %6.2f%%",  \
+                         __hpp__slsmg_color_printf, true);             \
+}
+
 __HPP_COLOR_PERCENT_FN(overhead, period)
 __HPP_COLOR_PERCENT_FN(overhead_sys, period_sys)
 __HPP_COLOR_PERCENT_FN(overhead_us, period_us)
 __HPP_COLOR_PERCENT_FN(overhead_guest_sys, period_guest_sys)
 __HPP_COLOR_PERCENT_FN(overhead_guest_us, period_guest_us)
+__HPP_COLOR_ACC_PERCENT_FN(overhead_acc, period)
 
 #undef __HPP_COLOR_PERCENT_FN
+#undef __HPP_COLOR_ACC_PERCENT_FN
 
 void hist_browser__init_hpp(void)
 {
@@ -671,6 +694,8 @@ void hist_browser__init_hpp(void)
                                hist_browser__hpp_color_overhead_guest_sys;
        perf_hpp__format[PERF_HPP__OVERHEAD_GUEST_US].color =
                                hist_browser__hpp_color_overhead_guest_us;
+       perf_hpp__format[PERF_HPP__OVERHEAD_ACC].color =
+                               hist_browser__hpp_color_overhead_acc;
 }
 
 static int hist_browser__show_entry(struct hist_browser *browser,