53 for ( op = msg; *op !=
'\0'; op++ ) {
56 fprintf(
f,
""" );
59 fprintf(
f,
"&" );
62 fprintf(
f,
"'" );
71 fprintf(
f,
"%c", *op);
89 fprintf(
f,
"<hardware>\n" );
91 fprintf(
f,
" <vendor string=\"");
94 fprintf(
f,
" <vendorCode value=\"%d\"/>\n", hwinfo->
vendor );
95 fprintf(
f,
" <model string=\"");
97 fprintf(
f,
"\"/>\n");
98 fprintf(
f,
" <modelCode value=\"%d\"/>\n", hwinfo->
model );
99 fprintf(
f,
" <cpuRevision value=\"%f\"/>\n", hwinfo->
revision );
100 fprintf(
f,
" <cpuID>\n" );
101 fprintf(
f,
" <family value=\"%d\"/>\n", hwinfo->
cpuid_family );
102 fprintf(
f,
" <model value=\"%d\"/>\n", hwinfo->
cpuid_model );
104 fprintf(
f,
" </cpuID>\n" );
105 fprintf(
f,
" <cpuMaxMegahertz value=\"%d\"/>\n", hwinfo->
cpu_max_mhz );
106 fprintf(
f,
" <cpuMinMegahertz value=\"%d\"/>\n", hwinfo->
cpu_min_mhz );
107 fprintf(
f,
" <threads value=\"%d\"/>\n", hwinfo->
threads );
108 fprintf(
f,
" <cores value=\"%d\"/>\n", hwinfo->
cores );
109 fprintf(
f,
" <sockets value=\"%d\"/>\n", hwinfo->
sockets );
110 fprintf(
f,
" <nodes value=\"%d\"/>\n", hwinfo->
nnodes );
111 fprintf(
f,
" <cpuPerNode value=\"%d\"/>\n", hwinfo->
ncpu );
112 fprintf(
f,
" <totalCPUs value=\"%d\"/>\n", hwinfo->
totalcpus );
113 fprintf(
f,
"</hardware>\n" );
136 fprintf( stderr,
"Error removing event from eventset\n" );
151 fprintf(
f,
" <event index=\"%d\" name=\"",num);
153 fprintf(
f,
"\" desc=\"");
155 fprintf(
f,
"\">\n");
158 fprintf(
f,
" <modifier name=\"");
160 fprintf(
f,
"\" desc=\"");
162 fprintf(
f,
"\"> </modifier>\n");
180 fprintf(
f,
" <eventset type=\"PRESET\">\n" );
193 fprintf(
f,
" </event>\n" );
197 fprintf(
f,
" </eventset>\n" );
212 fprintf(
f,
" <eventset type=\"NATIVE\">\n" );
245 fprintf(
f,
" </event>\n" );
251 fprintf(
f,
" </event>\n" );
256 fprintf(
f,
" </eventset>\n" );
266 fprintf( stderr,
"Usage: %s [options] [[event1] event2 ...]\n", argv[0] );
267 fprintf( stderr,
" options: -h print help message\n" );
268 fprintf( stderr,
" -p print only preset events\n" );
269 fprintf( stderr,
" -n print only native events\n" );
270 fprintf( stderr,
" -c n print only events for component index n\n" );
271 fprintf( stderr,
"If event1, event2, etc., are specified, then only events\n");
272 fprintf( stderr,
"that can be run in addition to these events will be printed\n\n");
276 parse_command_line (
int argc,
char **argv,
int numc) {
280 for(
i = 1;
i < argc;
i++ ) {
281 if ( argv[
i][0] ==
'-' ) {
282 switch ( argv[
i][1] ) {
287 cidx = (
i+1) < argc ?
atoi( argv[(
i++)+1] ) : -1;
288 if ( cidx < 0 || cidx >= numc ) {
289 fprintf( stderr,
"Error: component index %d out of bounds (0..%d)\n",
316 "Error: unknown option: %s\n", argv[
i] );
330 fprintf( stderr,
"Error: unknown event: %s\n", argv[
i] );
338 "Error: event %s cannot be counted with others\n",
350 main(
int argc,
char **argv)
359 fprintf(stderr,
"Error! PAPI_library_init\n");
377 fprintf(stderr,
"Error! PAPI_create_eventset\n");
385 parse_command_line(argc,argv,numc);
388 fprintf( stdout,
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" );
389 fprintf( stdout,
"<eventinfo>\n" );
399 fprintf( stdout,
"<component index=\"%d\" type=\"%s\" id=\"%s\">\n",
407 fprintf( stdout,
"</component>\n" );
414 fprintf( stdout,
"<component index=\"%d\" type=\"%s\" id=\"%s\">\n",
422 fprintf( stdout,
"</component>\n" );
427 fprintf(stderr,
"Error! PAPI_cleanup_eventset\n");
432 fprintf(stderr,
"Error! PAPI_destroy_eventset\n");
439 fprintf(stderr,
"Error! PAPI_create_eventset\n");
444 parse_command_line (argc, argv, numc);
447 fprintf( stdout,
"</eventinfo>\n" );
const PAPI_component_info_t * PAPI_get_component_info(int cidx)
int PAPI_add_event(int EventSet, int EventCode)
static void enum_preset_events(FILE *f, int cidx)
int PAPI_remove_event(int EventSet, int EventCode)
static void usage(char *argv[])
int PAPI_num_components(void)
char long_descr[PAPI_HUGE_STR_LEN]
int PAPI_event_name_to_code(const char *in, int *out)
Return codes and api definitions.
int PAPI_get_event_info(int EventCode, PAPI_event_info_t *info)
static int test_event(int evt)
int PAPI_library_init(int version)
char symbol[PAPI_HUGE_STR_LEN]
char model_string[PAPI_MAX_STR_LEN]
char name[PAPI_MAX_STR_LEN]
int PAPI_enum_cmp_event(int *EventCode, int modifier, int cidx)
int PAPI_cleanup_eventset(int EventSet)
static void xmlize_event(FILE *f, PAPI_event_info_t *info, int num)
int PAPI_create_eventset(int *EventSet)
char vendor_string[PAPI_MAX_STR_LEN]
int PAPI_query_event(int EventCode)
void test_fail(const char *file, int line, const char *call, int retval)
static int xmlize(const char *msg, FILE *f)
int PAPI_destroy_eventset(int *EventSet)
static int papi_xml_hwinfo(FILE *f)
static void enum_native_events(FILE *f, int cidx)
const PAPI_hw_info_t * PAPI_get_hardware_info(void)
int main(int argc, char **argv)
List all appio events codes and names.
int PAPI_set_debug(int level)