2009-08-12 12:03:49 +04:00
/* For general debugging purposes */
# include "../perf.h"
2009-08-17 00:05:48 +04:00
2009-08-12 12:03:49 +04:00
# include <string.h>
# include <stdarg.h>
# include <stdio.h>
2010-03-12 02:12:44 +03:00
# include "cache.h"
2009-08-17 00:05:48 +04:00
# include "color.h"
# include "event.h"
# include "debug.h"
2009-12-28 02:37:00 +03:00
# include "util.h"
2009-08-17 00:05:48 +04:00
2010-10-26 21:20:09 +04:00
int verbose ;
bool dump_trace = false , quiet = false ;
2009-08-12 12:03:49 +04:00
2009-10-21 23:34:06 +04:00
int eprintf ( int level , const char * fmt , . . . )
2009-08-12 12:03:49 +04:00
{
va_list args ;
int ret = 0 ;
2009-10-21 23:34:06 +04:00
if ( verbose > = level ) {
2009-08-12 12:03:49 +04:00
va_start ( args , fmt ) ;
2010-05-27 16:53:40 +04:00
if ( use_browser > 0 )
2010-08-10 22:58:50 +04:00
ret = ui_helpline__show_help ( fmt , args ) ;
2010-03-12 02:12:44 +03:00
else
ret = vfprintf ( stderr , fmt , args ) ;
2009-08-12 12:03:49 +04:00
va_end ( args ) ;
}
return ret ;
}
2009-08-16 21:24:21 +04: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-17 00:05:48 +04:00
2010-11-27 07:41:01 +03: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
2009-08-17 00:05:48 +04:00
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 ) ;
2010-06-12 06:44:04 +04:00
for ( j = i & ~ 15 ; j < = i ; j + + ) {
dump_printf_color ( " %c " , color ,
isprint ( raw_event [ j ] ) ?
raw_event [ j ] : ' . ' ) ;
2009-08-17 00:05:48 +04:00
}
dump_printf_color ( " \n " , color ) ;
}
}
dump_printf ( " . \n " ) ;
}