2009-08-12 10:03:49 +02:00
/* For general debugging purposes */
# include "../perf.h"
2009-08-16 22:05:48 +02:00
2009-08-12 10:03:49 +02:00
# include <string.h>
# include <stdarg.h>
# include <stdio.h>
2010-03-11 20:12:44 -03:00
# include "cache.h"
2009-08-16 22:05:48 +02:00
# include "color.h"
# include "event.h"
# include "debug.h"
2009-12-27 21:37:00 -02:00
# include "util.h"
2009-08-16 22:05:48 +02:00
2010-10-26 15:20:09 -02:00
int verbose ;
bool dump_trace = false , quiet = false ;
2009-08-12 10:03:49 +02:00
2009-10-21 17:34:06 -02:00
int eprintf ( int level , const char * fmt , . . . )
2009-08-12 10:03:49 +02:00
{
va_list args ;
int ret = 0 ;
2009-10-21 17:34:06 -02:00
if ( verbose > = level ) {
2009-08-12 10:03:49 +02:00
va_start ( args , fmt ) ;
2010-05-27 09:53:40 -03:00
if ( use_browser > 0 )
2010-08-10 15:58:50 -03:00
ret = ui_helpline__show_help ( fmt , args ) ;
2010-03-11 20:12:44 -03:00
else
ret = vfprintf ( stderr , fmt , args ) ;
2009-08-12 10:03:49 +02:00
va_end ( args ) ;
}
return ret ;
}
2009-08-16 19:24:21 +02:00
int dump_printf ( const char * fmt , . . . )
{
va_list args ;
int ret = 0 ;
if ( dump_trace ) {
va_start ( args , fmt ) ;
ret = vprintf ( fmt , args ) ;
va_end ( args ) ;
}
return ret ;
}
2009-08-16 22:05:48 +02:00
2010-11-27 02:41:01 -02:00
# ifdef NO_NEWT_SUPPORT
void ui__warning ( const char * format , . . . )
{
va_list args ;
va_start ( args , format ) ;
vfprintf ( stderr , format , args ) ;
va_end ( args ) ;
}
# endif
2011-03-28 09:50:11 -03:00
void ui__warning_paranoid ( void )
{
ui__warning ( " Permission error - are you root? \n "
" Consider tweaking /proc/sys/kernel/perf_event_paranoid: \n "
" -1 - Not paranoid at all \n "
" 0 - Disallow raw tracepoint access for unpriv \n "
" 1 - Disallow cpu events for unpriv \n "
" 2 - Disallow kernel profiling for unpriv \n " ) ;
}
2011-01-29 14:01:45 -02:00
void trace_event ( union perf_event * event )
2009-08-16 22:05:48 +02:00
{
unsigned char * raw_event = ( void * ) event ;
const char * color = PERF_COLOR_BLUE ;
int i , j ;
if ( ! dump_trace )
return ;
2010-11-30 17:48:53 -02:00
printf ( " . " ) ;
color_fprintf ( stdout , color , " \n . ... raw event: size %d bytes \n " ,
event - > header . size ) ;
2009-08-16 22:05:48 +02:00
for ( i = 0 ; i < event - > header . size ; i + + ) {
if ( ( i & 15 ) = = 0 ) {
2010-11-30 17:48:53 -02:00
printf ( " . " ) ;
color_fprintf ( stdout , color , " %04x: " , i ) ;
2009-08-16 22:05:48 +02:00
}
2010-11-30 17:48:53 -02:00
color_fprintf ( stdout , color , " %02x " , raw_event [ i ] ) ;
2009-08-16 22:05:48 +02:00
if ( ( ( i & 15 ) = = 15 ) | | i = = event - > header . size - 1 ) {
2010-11-30 17:48:53 -02:00
color_fprintf ( stdout , color , " " ) ;
2009-08-16 22:05:48 +02:00
for ( j = 0 ; j < 15 - ( i & 15 ) ; j + + )
2010-11-30 17:48:53 -02:00
color_fprintf ( stdout , color , " " ) ;
2010-06-11 19:44:04 -07:00
for ( j = i & ~ 15 ; j < = i ; j + + ) {
2010-11-30 17:48:53 -02:00
color_fprintf ( stdout , color , " %c " ,
isprint ( raw_event [ j ] ) ?
raw_event [ j ] : ' . ' ) ;
2009-08-16 22:05:48 +02:00
}
2010-11-30 17:48:53 -02:00
color_fprintf ( stdout , color , " \n " ) ;
2009-08-16 22:05:48 +02:00
}
}
2010-11-30 17:48:53 -02:00
printf ( " . \n " ) ;
2009-08-16 22:05:48 +02:00
}