2013-06-11 19:29:18 +04:00
# include <traceevent/event-parse.h>
2012-11-10 04:46:48 +04:00
# include "evsel.h"
# include "tests.h"
static int perf_evsel__test_field ( struct perf_evsel * evsel , const char * name ,
int size , bool should_be_signed )
{
struct format_field * field = perf_evsel__field ( evsel , name ) ;
int is_signed ;
int ret = 0 ;
if ( field = = NULL ) {
pr_debug ( " %s: \" %s \" field not found! \n " , evsel - > name , name ) ;
return - 1 ;
}
is_signed = ! ! ( field - > flags | FIELD_IS_SIGNED ) ;
if ( should_be_signed & & ! is_signed ) {
pr_debug ( " %s: \" %s \" signedness(%d) is wrong, should be %d \n " ,
evsel - > name , name , is_signed , should_be_signed ) ;
ret = - 1 ;
}
if ( field - > size ! = size ) {
pr_debug ( " %s: \" %s \" size (%d) should be %d! \n " ,
evsel - > name , name , field - > size , size ) ;
ret = - 1 ;
}
return ret ;
}
int test__perf_evsel__tp_sched_test ( void )
{
struct perf_evsel * evsel = perf_evsel__newtp ( " sched " , " sched_switch " , 0 ) ;
int ret = 0 ;
if ( evsel = = NULL ) {
pr_debug ( " perf_evsel__new \n " ) ;
return - 1 ;
}
if ( perf_evsel__test_field ( evsel , " prev_comm " , 16 , true ) )
ret = - 1 ;
if ( perf_evsel__test_field ( evsel , " prev_pid " , 4 , true ) )
ret = - 1 ;
if ( perf_evsel__test_field ( evsel , " prev_prio " , 4 , true ) )
ret = - 1 ;
if ( perf_evsel__test_field ( evsel , " prev_state " , 8 , true ) )
ret = - 1 ;
if ( perf_evsel__test_field ( evsel , " next_comm " , 16 , true ) )
ret = - 1 ;
if ( perf_evsel__test_field ( evsel , " next_pid " , 4 , true ) )
ret = - 1 ;
if ( perf_evsel__test_field ( evsel , " next_prio " , 4 , true ) )
ret = - 1 ;
perf_evsel__delete ( evsel ) ;
evsel = perf_evsel__newtp ( " sched " , " sched_wakeup " , 0 ) ;
if ( perf_evsel__test_field ( evsel , " comm " , 16 , true ) )
ret = - 1 ;
if ( perf_evsel__test_field ( evsel , " pid " , 4 , true ) )
ret = - 1 ;
if ( perf_evsel__test_field ( evsel , " prio " , 4 , true ) )
ret = - 1 ;
if ( perf_evsel__test_field ( evsel , " success " , 4 , true ) )
ret = - 1 ;
if ( perf_evsel__test_field ( evsel , " target_cpu " , 4 , true ) )
ret = - 1 ;
return ret ;
}