PAPI  5.0.1.0
johnmay2.c File Reference
Include dependency graph for johnmay2.c:

Go to the source code of this file.

Functions

int main (int argc, char **argv)

Variables

int TESTS_QUIET

Function Documentation

int main ( int  argc,
char **  argv 
)

Definition at line 5 of file johnmay2.c.

{
    int FPEventSet = PAPI_NULL;
    long long values;
    int PAPI_event, retval;
    char event_name[PAPI_MAX_STR_LEN];

    /* Set TESTS_QUIET variable */
    tests_quiet( argc, argv );  

        /* init PAPI */
    if ( ( retval =
           PAPI_library_init( PAPI_VER_CURRENT ) ) != PAPI_VER_CURRENT )
        test_fail( __FILE__, __LINE__, "PAPI_library_init", retval );

    /* Use PAPI_FP_INS if available, otherwise use PAPI_TOT_INS */
    if ( PAPI_query_event( PAPI_FP_INS ) == PAPI_OK )
        PAPI_event = PAPI_FP_INS;
    else
        PAPI_event = PAPI_TOT_INS;

    if ( ( retval = PAPI_query_event( PAPI_event ) ) != PAPI_OK )
        test_fail( __FILE__, __LINE__, "PAPI_query_event", retval );

        /* Create the eventset */
    if ( ( retval = PAPI_create_eventset( &FPEventSet ) ) != PAPI_OK )
        test_fail( __FILE__, __LINE__, "PAPI_create_eventset", retval );

        /* Add event to the eventset */
    if ( ( retval = PAPI_add_event( FPEventSet, PAPI_event ) ) != PAPI_OK )
        test_fail( __FILE__, __LINE__, "PAPI_add_event", retval );

    /* Start counting */
    if ( ( retval = PAPI_start( FPEventSet ) ) != PAPI_OK )
        test_fail( __FILE__, __LINE__, "PAPI_start", retval );

    /* Try to cleanup while running */
        /* Fail test if this isn't refused */
    if ( ( retval = PAPI_cleanup_eventset( FPEventSet ) ) != PAPI_EISRUN )
        test_fail( __FILE__, __LINE__, "PAPI_cleanup_eventset", retval );

    /* Try to destroy eventset while running */
    /* Fail test if this isn't refused */
    if ( ( retval = PAPI_destroy_eventset( &FPEventSet ) ) != PAPI_EISRUN )
        test_fail( __FILE__, __LINE__, "PAPI_destroy_eventset", retval );

    /* do some work */
    do_flops( 1000000 );

    /* stop counting */
    if ( ( retval = PAPI_stop( FPEventSet, &values ) ) != PAPI_OK )
        test_fail( __FILE__, __LINE__, "PAPI_stop", retval );

    /* Try to destroy eventset without cleaning first */
    /* Fail test if this isn't refused */
    if ( ( retval = PAPI_destroy_eventset( &FPEventSet ) ) != PAPI_EINVAL )
        test_fail( __FILE__, __LINE__, "PAPI_destroy_eventset", retval );

    /* Try to cleanup eventset.  */
    /* This should pass.         */
    if ( ( retval = PAPI_cleanup_eventset( FPEventSet ) ) != PAPI_OK )
        test_fail( __FILE__, __LINE__, "PAPI_cleanup_eventset", retval );

    /* Try to destroy eventset.  */
    /* This should pass.         */
    if ( ( retval = PAPI_destroy_eventset( &FPEventSet ) ) != PAPI_OK )
        test_fail( __FILE__, __LINE__, "PAPI_destroy_eventset", retval );

    /* Make sure eventset was set to PAPI_NULL */
    if ( FPEventSet != PAPI_NULL )
        test_fail( __FILE__, __LINE__, "FPEventSet != PAPI_NULL", retval );

    if ( !TESTS_QUIET ) {
        if ( ( retval =
               PAPI_event_code_to_name( PAPI_event, event_name ) ) != PAPI_OK )
            test_fail( __FILE__, __LINE__, "PAPI_event_code_to_name", retval );

        printf( "Test case John May 2: cleanup / destroy eventset.\n" );
        printf( "-------------------------------------------------\n" );
        printf( "Test run    : \t1\n" );
        printf( "%s : \t", event_name );
        printf( LLDFMT, values );
        printf( "\n" );
        printf( "-------------------------------------------------\n" );
        printf( "The following messages will appear if PAPI is compiled with debug enabled:\n" );
        printf
            ( "\tPAPI Error Code -10: PAPI_EISRUN: EventSet is currently counting\n" );
        printf
            ( "\tPAPI Error Code -10: PAPI_EISRUN: EventSet is currently counting\n" );
        printf( "\tPAPI Error Code -1: PAPI_EINVAL: Invalid argument\n" );
    }
    test_pass( __FILE__, NULL, 0 );
    exit( 1 );
}

Here is the call graph for this function:


Variable Documentation

Definition at line 11 of file test_utils.c.

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines