303 unsigned int filter = 0;
304 int print_event_info = 0;
307 int print_tabular = 1;
313 int check_counter = 0;
320 for( args = 1; args < argc; args++ ) {
321 if ( strstr( argv[args],
"-e" ) ) {
322 print_event_info = 1;
323 name = argv[args + 1];
324 if ( (
name == NULL ) || ( strlen(
name ) == 0 ) ) {
329 else if ( strstr( argv[args],
"-c" ) || strstr (argv[args],
"--check") )
334 else if ( strstr( argv[args],
"-a" ))
336 else if ( strstr( argv[args],
"-d" ) )
338 else if ( strstr( argv[args],
"-h" ) ) {
341 }
else if ( strstr( argv[args],
"--br" ) )
343 else if ( strstr( argv[args],
"--cache" ) )
345 else if ( strstr( argv[args],
"--cnd" ) )
347 else if ( strstr( argv[args],
"--fp" ) )
349 else if ( strstr( argv[args],
"--ins" ) )
351 else if ( strstr( argv[args],
"--idl" ) )
353 else if ( strstr( argv[args],
"--l1" ) )
355 else if ( strstr( argv[args],
"--l2" ) )
357 else if ( strstr( argv[args],
"--l3" ) )
359 else if ( strstr( argv[args],
"--mem" ) )
361 else if ( strstr( argv[args],
"--msc" ) )
363 else if ( strstr( argv[args],
"--tlb" ) )
368 filter = (
unsigned int ) ( -1 );
375 fprintf(stderr,
"Error! PAPI library mismatch!\n");
382 fprintf(stderr,
"Error with PAPI_set debug!\n");
389 fprintf(stderr,
"Error with PAPI_get_hardware_info!\n");
395 if ( print_event_info ) {
401 printf(
"%-30s%s\n%-30s%#-10x\n%-30s%d\n",
402 "Event name:", info.
symbol,
"Event Code:",
405 printf(
"%-29s|%s|\n%-29s|%s|\n%-29s|%s|\n",
408 "Developer's Notes:", info.
note );
409 printf(
"%-29s|%s|\n%-29s|%s|\n",
"Derived Type:",
410 info.
derived,
"Postfix Processing String:",
413 for( j = 0; j < ( int ) info.
count; j++ ) {
414 printf(
" Native Code[%d]: %#x |%s|\n", j,
417 printf(
" Number of Register Values: %d\n", n_info.
count );
418 for( k = 0; k < ( int ) n_info.
count; k++ ) {
419 printf(
" Register[%2d]: %#08x |%s|\n", k,
422 printf(
" Native Event Description: |%s|\n\n",
427 printf(
"\nPRESET event %s is NOT available on this architecture!\n\n",
name);
431 printf(
"%-30s%s\n%-30s%#-10x\n%-30s%d\n",
432 "Event name:", info.
symbol,
"Event Code:",
433 info.
event_code,
"Number of Register Values:",
435 printf(
"%-29s|%s|\n",
"Description:", info.
long_descr );
436 for ( k = 0; k < ( int ) info.
count; k++ ) {
437 printf(
" Register[%2d]: %#08x |%s|\n", k,
442 if ( !strchr(
name,
':' ) ) {
445 printf(
"\nUnit Masks:\n" );
450 printf(
"%-29s|%s|%s|\n",
451 " Mask Info:", info.
symbol,
453 for ( k = 0; k < ( int ) info.
count;k++ ) {
454 printf(
" Register[%2d]: %#08x |%s|\n",
467 printf(
"Sorry, an event by the name '%s' could not be found.\n" 468 " Is it typed correctly?\n\n",
name );
474 for (
i=0 ;
i<2 ;
i++) {
489 printf(
"================================================================================\n" );
490 printf(
" PAPI Preset Events\n" );
491 printf(
"================================================================================\n" );
494 printf(
"================================================================================\n" );
495 printf(
" User Defined Events\n" );
496 printf(
"================================================================================\n" );
499 if ( print_tabular ) {
500 printf(
" Name Code " );
501 if ( !print_avail_only ) {
504 printf(
"Deriv Description (Note)\n" );
506 printf(
"%-13s%-11s%-8s%-16s\n |Long Description|\n" 507 " |Developer's Notes|\n |Derived|\n |PostFix|\n" 508 " Native Code[n]: <hex> |name|\n",
509 "Symbol",
"Event Code",
"Count",
"|Short Description|" );
513 if ( print_tabular ) {
516 if ( print_avail_only ) {
518 if ( (check_counter &&
checkCounter (event_code)) || !check_counter)
520 printf(
"%-13s%#x %-5s%s",
526 if ( info.
note[0] ) {
527 printf(
" (%s)", info.
note );
531 printf(
"%-13s%#x %-6s%-4s %s",
534 ( info.
count ?
"Yes" :
"No" ),
536 if ( info.
note[0] ) {
537 printf(
" (%s)", info.
note );
543 if ((check_counter &&
checkCounter (event_code)) || !check_counter )
546 if ( !strcmp(
is_derived( &info ),
"Yes" ) ) {
551 if ( ( print_avail_only && info.
count ) ||
552 ( print_avail_only == 0 ) )
554 if ((check_counter &&
checkCounter (event_code)) || !check_counter)
556 printf(
"%s\t%#x\t%d\t|%s|\n |%s|\n" 557 " |%s|\n |%s|\n |%s|\n",
561 for ( j = 0; j < ( int ) info.
count; j++ ) {
562 printf(
" Native Code[%d]: %#x |%s|\n", j,
569 if ((check_counter &&
checkCounter (event_code)) || !check_counter )
572 if ( !strcmp(
is_derived( &info ),
"Yes" ) ) {
581 printf(
"--------------------------------------------------------------------------------\n" );
583 if ( !print_event_info ) {
584 if ( print_avail_only ) {
585 printf(
"Of %d available events, %d ", avail_count, deriv_count );
587 printf(
"Of %d possible events, %d are available, of which %d ",
588 tot_count, avail_count, deriv_count );
590 if ( deriv_count == 1 ) {
591 printf(
"is derived.\n\n" );
593 printf(
"are derived.\n\n" );
596 if (avail_count==0) {
597 printf(
"No events detected! Check papi_component_avail to find out why.\n");
#define PAPI_PRESET_BIT_TLB
#define PAPI_PRESET_BIT_L3
#define PAPI_PRESET_BIT_L1
int PAPI_enum_event(int *EventCode, int modifier)
static char * is_derived(PAPI_event_info_t *info)
char long_descr[PAPI_HUGE_STR_LEN]
int PAPI_event_name_to_code(const char *in, int *out)
static int parse_unit_masks(PAPI_event_info_t *info)
unsigned int code[PAPI_MAX_INFO_TERMS]
char derived[PAPI_MIN_STR_LEN]
int PAPI_get_event_info(int EventCode, PAPI_event_info_t *info)
int PAPI_library_init(int version)
char symbol[PAPI_HUGE_STR_LEN]
#define PAPI_PRESET_BIT_MSC
char short_descr[PAPI_MIN_STR_LEN]
#define PAPI_PRESET_BIT_BR
#define PAPI_PRESET_BIT_INS
char name[PAPI_MAX_INFO_TERMS][PAPI_2MAX_STR_LEN]
static void print_help(char **argv)
#define PAPI_PRESET_BIT_FP
int is_preset_event_available(char *name)
#define PAPI_PRESET_BIT_CACH
#define PAPI_PRESET_BIT_CND
char postfix[PAPI_2MAX_STR_LEN]
#define PAPI_PRESET_BIT_IDL
static int checkCounter(int eventcode)
char note[PAPI_HUGE_STR_LEN]
int PAPI_set_debug(int level)
#define PAPI_PRESET_BIT_L2