at v3.15 1.9 kB view raw
1/* For general debugging purposes */ 2 3#include "../perf.h" 4 5#include <string.h> 6#include <stdarg.h> 7#include <stdio.h> 8 9#include "cache.h" 10#include "color.h" 11#include "event.h" 12#include "debug.h" 13#include "util.h" 14#include "target.h" 15 16int verbose; 17bool dump_trace = false, quiet = false; 18 19static int _eprintf(int level, const char *fmt, va_list args) 20{ 21 int ret = 0; 22 23 if (verbose >= level) { 24 if (use_browser >= 1) 25 ui_helpline__vshow(fmt, args); 26 else 27 ret = vfprintf(stderr, fmt, args); 28 } 29 30 return ret; 31} 32 33int eprintf(int level, const char *fmt, ...) 34{ 35 va_list args; 36 int ret; 37 38 va_start(args, fmt); 39 ret = _eprintf(level, fmt, args); 40 va_end(args); 41 42 return ret; 43} 44 45/* 46 * Overloading libtraceevent standard info print 47 * function, display with -v in perf. 48 */ 49void pr_stat(const char *fmt, ...) 50{ 51 va_list args; 52 53 va_start(args, fmt); 54 _eprintf(1, fmt, args); 55 va_end(args); 56 eprintf(1, "\n"); 57} 58 59int dump_printf(const char *fmt, ...) 60{ 61 va_list args; 62 int ret = 0; 63 64 if (dump_trace) { 65 va_start(args, fmt); 66 ret = vprintf(fmt, args); 67 va_end(args); 68 } 69 70 return ret; 71} 72 73void trace_event(union perf_event *event) 74{ 75 unsigned char *raw_event = (void *)event; 76 const char *color = PERF_COLOR_BLUE; 77 int i, j; 78 79 if (!dump_trace) 80 return; 81 82 printf("."); 83 color_fprintf(stdout, color, "\n. ... raw event: size %d bytes\n", 84 event->header.size); 85 86 for (i = 0; i < event->header.size; i++) { 87 if ((i & 15) == 0) { 88 printf("."); 89 color_fprintf(stdout, color, " %04x: ", i); 90 } 91 92 color_fprintf(stdout, color, " %02x", raw_event[i]); 93 94 if (((i & 15) == 15) || i == event->header.size-1) { 95 color_fprintf(stdout, color, " "); 96 for (j = 0; j < 15-(i & 15); j++) 97 color_fprintf(stdout, color, " "); 98 for (j = i & ~15; j <= i; j++) { 99 color_fprintf(stdout, color, "%c", 100 isprint(raw_event[j]) ? 101 raw_event[j] : '.'); 102 } 103 color_fprintf(stdout, color, "\n"); 104 } 105 } 106 printf(".\n"); 107}