|
Packit Service |
a1973e |
/****************************/
|
|
Packit Service |
a1973e |
/* THIS IS OPEN SOURCE CODE */
|
|
Packit Service |
a1973e |
/****************************/
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
/**
|
|
Packit Service |
a1973e |
* @author Tushar Mohan
|
|
Packit Service |
a1973e |
*
|
|
Packit Service |
a1973e |
* test case for the appio component
|
|
Packit Service |
a1973e |
* (adapted from test in linux-net component)
|
|
Packit Service |
a1973e |
*
|
|
Packit Service |
a1973e |
* @brief
|
|
Packit Service |
a1973e |
* Prints the values of several (but not all) appio events specified by names
|
|
Packit Service |
a1973e |
*/
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
#include <stdio.h>
|
|
Packit Service |
a1973e |
#include <stdlib.h>
|
|
Packit Service |
a1973e |
#include <errno.h>
|
|
Packit Service |
a1973e |
#include <sys/types.h>
|
|
Packit Service |
a1973e |
#include <sys/stat.h>
|
|
Packit Service |
a1973e |
#include <fcntl.h>
|
|
Packit Service |
a1973e |
#include <unistd.h>
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
#include "papi.h"
|
|
Packit Service |
a1973e |
#include "papi_test.h"
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
#define NUM_EVENTS 11
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
int main (int argc, char **argv)
|
|
Packit Service |
a1973e |
{
|
|
Packit Service |
a1973e |
int i, retval;
|
|
Packit Service |
a1973e |
int EventSet = PAPI_NULL;
|
|
Packit Service |
a1973e |
char *event_name[NUM_EVENTS] = {
|
|
Packit Service |
a1973e |
"READ_BYTES",
|
|
Packit Service |
a1973e |
"READ_CALLS",
|
|
Packit Service |
a1973e |
"READ_USEC",
|
|
Packit Service |
a1973e |
"READ_EOF",
|
|
Packit Service |
a1973e |
"READ_SHORT",
|
|
Packit Service |
a1973e |
"READ_ERR",
|
|
Packit Service |
a1973e |
"WRITE_BYTES",
|
|
Packit Service |
a1973e |
"WRITE_CALLS",
|
|
Packit Service |
a1973e |
"WRITE_USEC",
|
|
Packit Service |
a1973e |
"WRITE_ERR",
|
|
Packit Service |
a1973e |
"WRITE_SHORT"
|
|
Packit Service |
a1973e |
};
|
|
Packit Service |
a1973e |
int event_code[NUM_EVENTS] = { 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
|
Packit Service |
a1973e |
long long event_value[NUM_EVENTS];
|
|
Packit Service |
a1973e |
int total_events=0;
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
/* Set TESTS_QUIET variable */
|
|
Packit Service |
a1973e |
tests_quiet( argc, argv );
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
/* PAPI Initialization */
|
|
Packit Service |
a1973e |
retval = PAPI_library_init( PAPI_VER_CURRENT );
|
|
Packit Service |
a1973e |
if ( retval != PAPI_VER_CURRENT ) {
|
|
Packit Service |
a1973e |
test_fail(__FILE__, __LINE__,"PAPI_library_init failed\n",retval);
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
if (!TESTS_QUIET) {
|
|
Packit Service |
a1973e |
printf("Appio events by name\n");
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
/* Map names to codes */
|
|
Packit Service |
a1973e |
for ( i=0; i
|
|
Packit Service |
a1973e |
retval = PAPI_event_name_to_code( event_name[i], &event_code[i]);
|
|
Packit Service |
a1973e |
if ( retval != PAPI_OK ) {
|
|
Packit Service |
a1973e |
test_fail( __FILE__, __LINE__, "PAPI_event_name_to_code", retval );
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
total_events++;
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
int fdin,fdout;
|
|
Packit Service |
a1973e |
const char* infile = "/etc/group";
|
|
Packit Service |
a1973e |
if (!TESTS_QUIET) printf("This program will read %s and write it to /dev/null\n", infile);
|
|
Packit Service |
a1973e |
int bytes = 0;
|
|
Packit Service |
a1973e |
char buf[1024];
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
/* Create and populate the EventSet */
|
|
Packit Service |
a1973e |
EventSet = PAPI_NULL;
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
retval = PAPI_create_eventset( &EventSet );
|
|
Packit Service |
a1973e |
if (retval != PAPI_OK) {
|
|
Packit Service |
a1973e |
test_fail(__FILE__, __LINE__, "PAPI_create_eventset()", retval);
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
retval = PAPI_add_events( EventSet, event_code, NUM_EVENTS);
|
|
Packit Service |
a1973e |
if (retval != PAPI_OK) {
|
|
Packit Service |
a1973e |
test_fail(__FILE__, __LINE__, "PAPI_add_events()", retval);
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
retval = PAPI_start( EventSet );
|
|
Packit Service |
a1973e |
if (retval != PAPI_OK) {
|
|
Packit Service |
a1973e |
test_fail(__FILE__, __LINE__, "PAPI_start()", retval);
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
fdin=open(infile, O_RDONLY);
|
|
Packit Service |
a1973e |
if (fdin < 0) perror("Could not open file for reading: \n");
|
|
Packit Service |
a1973e |
fdout=open("/dev/null", O_WRONLY);
|
|
Packit Service |
a1973e |
if (fdout < 0) perror("Could not open /dev/null for writing: \n");
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
while ((bytes = read(fdin, buf, 1024)) > 0) {
|
|
Packit Service |
a1973e |
write(fdout, buf, bytes);
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
close(fdin);
|
|
Packit Service |
a1973e |
close(fdout);
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
retval = PAPI_stop( EventSet, event_value );
|
|
Packit Service |
a1973e |
if (retval != PAPI_OK) {
|
|
Packit Service |
a1973e |
test_fail(__FILE__, __LINE__, "PAPI_start()", retval);
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
if (!TESTS_QUIET) {
|
|
Packit Service |
a1973e |
for ( i=0; i
|
|
Packit Service |
a1973e |
printf("%#x %-24s = %lld\n",
|
|
Packit Service |
a1973e |
event_code[i], event_name[i], event_value[i]);
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
retval = PAPI_cleanup_eventset( EventSet );
|
|
Packit Service |
a1973e |
if (retval != PAPI_OK) {
|
|
Packit Service |
a1973e |
test_fail(__FILE__, __LINE__, "PAPI_cleanup_eventset()", retval);
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
retval = PAPI_destroy_eventset( &EventSet );
|
|
Packit Service |
a1973e |
if (retval != PAPI_OK) {
|
|
Packit Service |
a1973e |
test_fail(__FILE__, __LINE__, "PAPI_destroy_eventset()", retval);
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
if (total_events==0) {
|
|
Packit Service |
a1973e |
test_skip(__FILE__,__LINE__,"No appio events found", 0);
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
test_pass( __FILE__ );
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
return 0;
|
|
Packit Service |
a1973e |
}
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
// vim:set ai ts=4 sw=4 sts=4 et:
|