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 16 int verbose; 17 bool dump_trace = false, quiet = false; 18 19 int eprintf(int level, const char *fmt, ...) 20 { 21 va_list args; 22 int ret = 0; 23 24 if (verbose >= level) { 25 va_start(args, fmt); 26 if (use_browser == 1) 27 ret = ui_helpline__show_help(fmt, args); 28 else if (use_browser == 2) 29 ret = perf_gtk__show_helpline(fmt, args); 30 else 31 ret = vfprintf(stderr, fmt, args); 32 va_end(args); 33 } 34 35 return ret; 36 } 37 38 int dump_printf(const char *fmt, ...) 39 { 40 va_list args; 41 int ret = 0; 42 43 if (dump_trace) { 44 va_start(args, fmt); 45 ret = vprintf(fmt, args); 46 va_end(args); 47 } 48 49 return ret; 50 } 51 52 #if !defined(NEWT_SUPPORT) && !defined(GTK2_SUPPORT) 53 int ui__warning(const char *format, ...) 54 { 55 va_list args; 56 57 va_start(args, format); 58 vfprintf(stderr, format, args); 59 va_end(args); 60 return 0; 61 } 62 #endif 63 64 int ui__error_paranoid(void) 65 { 66 return ui__error("Permission error - are you root?\n" 67 "Consider tweaking /proc/sys/kernel/perf_event_paranoid:\n" 68 " -1 - Not paranoid at all\n" 69 " 0 - Disallow raw tracepoint access for unpriv\n" 70 " 1 - Disallow cpu events for unpriv\n" 71 " 2 - Disallow kernel profiling for unpriv\n"); 72 } 73 74 void trace_event(union perf_event *event) 75 { 76 unsigned char *raw_event = (void *)event; 77 const char *color = PERF_COLOR_BLUE; 78 int i, j; 79 80 if (!dump_trace) 81 return; 82 83 printf("."); 84 color_fprintf(stdout, color, "\n. ... raw event: size %d bytes\n", 85 event->header.size); 86 87 for (i = 0; i < event->header.size; i++) { 88 if ((i & 15) == 0) { 89 printf("."); 90 color_fprintf(stdout, color, " %04x: ", i); 91 } 92 93 color_fprintf(stdout, color, " %02x", raw_event[i]); 94 95 if (((i & 15) == 15) || i == event->header.size-1) { 96 color_fprintf(stdout, color, " "); 97 for (j = 0; j < 15-(i & 15); j++) 98 color_fprintf(stdout, color, " "); 99 for (j = i & ~15; j <= i; j++) { 100 color_fprintf(stdout, color, "%c", 101 isprint(raw_event[j]) ? 102 raw_event[j] : '.'); 103 } 104 color_fprintf(stdout, color, "\n"); 105 } 106 } 107 printf(".\n"); 108 } 109