perf tools: Librarize trace_event() helper
Frederic Weisbecker [Sun, 16 Aug 2009 20:05:48 +0000 (22:05 +0200)]
Librarize trace_event() helper so that perf trace can use it
too. Also clean up the debug.h includes a bit.

It's not good to have it included in perf.h because it doesn't
make it flexible against other headers it may need (headers
that can also depend on perf.h and then create a recursive
header dependency).

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
LKML-Reference: <1250453149-664-1-git-send-email-fweisbec@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

tools/perf/builtin-annotate.c
tools/perf/builtin-record.c
tools/perf/builtin-report.c
tools/perf/builtin-stat.c
tools/perf/builtin-top.c
tools/perf/perf.h
tools/perf/util/color.c
tools/perf/util/color.h
tools/perf/util/debug.c
tools/perf/util/debug.h
tools/perf/util/symbol.c

index 6d75151..96d421f 100644 (file)
@@ -17,6 +17,7 @@
 #include "util/string.h"
 
 #include "perf.h"
+#include "util/debug.h"
 
 #include "util/parse-options.h"
 #include "util/parse-events.h"
index 65b4115..6a5db67 100644 (file)
@@ -16,6 +16,7 @@
 
 #include "util/header.h"
 #include "util/event.h"
+#include "util/debug.h"
 
 #include <unistd.h>
 #include <sched.h>
index c6326de..1e3ad22 100644 (file)
@@ -20,6 +20,7 @@
 #include "util/values.h"
 
 #include "perf.h"
+#include "util/debug.h"
 #include "util/header.h"
 
 #include "util/parse-options.h"
@@ -39,8 +40,6 @@ static char           *field_sep;
 static int             input;
 static int             show_mask = SHOW_KERNEL | SHOW_USER | SHOW_HV;
 
-#define cdprintf(x...) do { if (dump_trace) color_fprintf(stdout, color, x); } while (0)
-
 static int             full_paths;
 static int             show_nr_samples;
 
@@ -1285,42 +1284,6 @@ process_lost_event(event_t *event, unsigned long offset, unsigned long head)
        return 0;
 }
 
-static void trace_event(event_t *event)
-{
-       unsigned char *raw_event = (void *)event;
-       const char *color = PERF_COLOR_BLUE;
-       int i, j;
-
-       if (!dump_trace)
-               return;
-
-       dump_printf(".");
-       cdprintf("\n. ... raw event: size %d bytes\n", event->header.size);
-
-       for (i = 0; i < event->header.size; i++) {
-               if ((i & 15) == 0) {
-                       dump_printf(".");
-                       cdprintf("  %04x: ", i);
-               }
-
-               cdprintf(" %02x", raw_event[i]);
-
-               if (((i & 15) == 15) || i == event->header.size-1) {
-                       cdprintf("  ");
-                       for (j = 0; j < 15-(i & 15); j++)
-                               cdprintf("   ");
-                       for (j = 0; j < (i & 15); j++) {
-                               if (isprint(raw_event[i-15+j]))
-                                       cdprintf("%c", raw_event[i-15+j]);
-                               else
-                                       cdprintf(".");
-                       }
-                       cdprintf("\n");
-               }
-       }
-       dump_printf(".\n");
-}
-
 static int
 process_read_event(event_t *event, unsigned long offset, unsigned long head)
 {
index 4b9dd4a..1a26262 100644 (file)
@@ -42,6 +42,8 @@
 #include "util/util.h"
 #include "util/parse-options.h"
 #include "util/parse-events.h"
+#include "util/event.h"
+#include "util/debug.h"
 
 #include <sys/prctl.h>
 #include <math.h>
index 06f763e..62b55ec 100644 (file)
@@ -27,6 +27,8 @@
 #include "util/parse-options.h"
 #include "util/parse-events.h"
 
+#include "util/debug.h"
+
 #include <assert.h>
 #include <fcntl.h>
 
index f550921..e5148e2 100644 (file)
@@ -48,7 +48,6 @@
 
 #include "../../include/linux/perf_counter.h"
 #include "util/types.h"
-#include "util/debug.h"
 
 /*
  * prctl(PR_TASK_PERF_COUNTERS_DISABLE) will (cheaply) disable all
index e47fdeb..e88bca5 100644 (file)
@@ -166,7 +166,7 @@ int perf_color_default_config(const char *var, const char *value, void *cb)
        return perf_default_config(var, value, cb);
 }
 
-static int color_vfprintf(FILE *fp, const char *color, const char *fmt,
+static int __color_vfprintf(FILE *fp, const char *color, const char *fmt,
                va_list args, const char *trail)
 {
        int r = 0;
@@ -191,6 +191,10 @@ static int color_vfprintf(FILE *fp, const char *color, const char *fmt,
        return r;
 }
 
+int color_vfprintf(FILE *fp, const char *color, const char *fmt, va_list args)
+{
+       return __color_vfprintf(fp, color, fmt, args, NULL);
+}
 
 
 int color_fprintf(FILE *fp, const char *color, const char *fmt, ...)
@@ -199,7 +203,7 @@ int color_fprintf(FILE *fp, const char *color, const char *fmt, ...)
        int r;
 
        va_start(args, fmt);
-       r = color_vfprintf(fp, color, fmt, args, NULL);
+       r = color_vfprintf(fp, color, fmt, args);
        va_end(args);
        return r;
 }
@@ -209,7 +213,7 @@ int color_fprintf_ln(FILE *fp, const char *color, const char *fmt, ...)
        va_list args;
        int r;
        va_start(args, fmt);
-       r = color_vfprintf(fp, color, fmt, args, "\n");
+       r = __color_vfprintf(fp, color, fmt, args, "\n");
        va_end(args);
        return r;
 }
index 43d0d1b..58d5975 100644 (file)
@@ -32,6 +32,7 @@ int perf_color_default_config(const char *var, const char *value, void *cb);
 int perf_config_colorbool(const char *var, const char *value, int stdout_is_tty);
 void color_parse(const char *value, const char *var, char *dst);
 void color_parse_mem(const char *value, int len, const char *var, char *dst);
+int color_vfprintf(FILE *fp, const char *color, const char *fmt, va_list args);
 int color_fprintf(FILE *fp, const char *color, const char *fmt, ...);
 int color_fprintf_ln(FILE *fp, const char *color, const char *fmt, ...);
 int color_fwrite_lines(FILE *fp, const char *color, size_t count, const char *buf);
index 8318fde..e8ca98f 100644 (file)
@@ -1,10 +1,15 @@
 /* For general debugging purposes */
 
 #include "../perf.h"
+
 #include <string.h>
 #include <stdarg.h>
 #include <stdio.h>
 
+#include "color.h"
+#include "event.h"
+#include "debug.h"
+
 int verbose = 0;
 int dump_trace = 0;
 
@@ -35,3 +40,56 @@ int dump_printf(const char *fmt, ...)
 
        return ret;
 }
+
+static int dump_printf_color(const char *fmt, const char *color, ...)
+{
+       va_list args;
+       int ret = 0;
+
+       if (dump_trace) {
+               va_start(args, color);
+               ret = color_vfprintf(stdout, color, fmt, args);
+               va_end(args);
+       }
+
+       return ret;
+}
+
+
+void trace_event(event_t *event)
+{
+       unsigned char *raw_event = (void *)event;
+       const char *color = PERF_COLOR_BLUE;
+       int i, j;
+
+       if (!dump_trace)
+               return;
+
+       dump_printf(".");
+       dump_printf_color("\n. ... raw event: size %d bytes\n", color,
+                         event->header.size);
+
+       for (i = 0; i < event->header.size; i++) {
+               if ((i & 15) == 0) {
+                       dump_printf(".");
+                       dump_printf_color("  %04x: ", color, i);
+               }
+
+               dump_printf_color(" %02x", color, raw_event[i]);
+
+               if (((i & 15) == 15) || i == event->header.size-1) {
+                       dump_printf_color("  ", color);
+                       for (j = 0; j < 15-(i & 15); j++)
+                               dump_printf_color("   ", color);
+                       for (j = 0; j < (i & 15); j++) {
+                               if (isprint(raw_event[i-15+j]))
+                                       dump_printf_color("%c", color,
+                                                         raw_event[i-15+j]);
+                               else
+                                       dump_printf_color(".", color);
+                       }
+                       dump_printf_color("\n", color);
+               }
+       }
+       dump_printf(".\n");
+}
index a683bd5..437eea5 100644 (file)
@@ -5,3 +5,4 @@ extern int dump_trace;
 
 int eprintf(const char *fmt, ...) __attribute__((format(printf, 1, 2)));
 int dump_printf(const char *fmt, ...) __attribute__((format(printf, 1, 2)));
+void trace_event(event_t *event);
index 3159d47..fd3d9c8 100644 (file)
@@ -3,6 +3,8 @@
 #include "string.h"
 #include "symbol.h"
 
+#include "debug.h"
+
 #include <libelf.h>
 #include <gelf.h>
 #include <elf.h>