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