aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/color.c
diff options
context:
space:
mode:
authorFrederic Weisbecker <fweisbec@gmail.com>2009-07-02 20:14:34 +0200
committerIngo Molnar <mingo@elte.hu>2009-07-02 21:38:37 +0200
commit1e11fd82d247e4e48a1d6c49402214434538d3fd (patch)
tree7ac435b0be559c113987a64126559ea9b41627dc /tools/perf/util/color.c
parentperf_counter tools: Set the minimum percent for callchains to be displayed (diff)
downloadlinux-dev-1e11fd82d247e4e48a1d6c49402214434538d3fd.tar.xz
linux-dev-1e11fd82d247e4e48a1d6c49402214434538d3fd.zip
perf_counter tools: Provide helper to print percents color
Among perf annotate, perf report and perf top, we can find the common colored printing of percents according to the following rules: High overhead = > 5%, colored in red Mid overhead = > 0.5%, colored in green Low overhead = < 0.5%, default color Factorize these multiple checks in a single function named percent_color_fprintf() and also provide a get_percent_color() for sites which print percentages and other things at the same time. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Mike Galbraith <efault@gmx.de> Cc: Paul Mackerras <paulus@samba.org> Cc: Anton Blanchard <anton@samba.org> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> LKML-Reference: <1246558475-10624-2-git-send-email-fweisbec@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/util/color.c')
-rw-r--r--tools/perf/util/color.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/tools/perf/util/color.c b/tools/perf/util/color.c
index 26f82318b86b..90a044d1fe7d 100644
--- a/tools/perf/util/color.c
+++ b/tools/perf/util/color.c
@@ -242,4 +242,31 @@ int color_fwrite_lines(FILE *fp, const char *color,
return 0;
}
+char *get_percent_color(double percent)
+{
+ char *color = PERF_COLOR_NORMAL;
+
+ /*
+ * We color high-overhead entries in red, mid-overhead
+ * entries in green - and keep the low overhead places
+ * normal:
+ */
+ if (percent >= MIN_RED)
+ color = PERF_COLOR_RED;
+ else {
+ if (percent > MIN_GREEN)
+ color = PERF_COLOR_GREEN;
+ }
+ return color;
+}
+int percent_color_fprintf(FILE *fp, const char *fmt, double percent)
+{
+ int r;
+ char *color;
+
+ color = get_percent_color(percent);
+ r = color_fprintf(fp, color, fmt, percent);
+
+ return r;
+}