Blame src/ctests/dmem_info.c

Packit 577717
/*
Packit 577717
 * This file perfoms the following test:  dynamic memory info
Packit 577717
 * The pages used should increase steadily.
Packit 577717
 *
Packit 577717
 * Author: Kevin London
Packit 577717
 *	   london@cs.utk.edu
Packit 577717
 */
Packit 577717
Packit 577717
#include <stdio.h>
Packit 577717
#include <stdlib.h>
Packit 577717
Packit 577717
#include "papi.h"
Packit 577717
#include "papi_test.h"
Packit 577717
Packit 577717
#include "do_loops.h"
Packit 577717
Packit 577717
#define ALLOCMEM 200000
Packit 577717
static void
Packit 577717
dump_memory_info( FILE * output, PAPI_dmem_info_t * d )
Packit 577717
{
Packit 577717
	fprintf( output, "\n--------\n" );
Packit 577717
	fprintf( output, "Mem Size:\t\t%lld\n", d->size );
Packit 577717
	fprintf( output, "Mem Peak Size:\t\t%lld\n", d->peak );
Packit 577717
	fprintf( output, "Mem Resident:\t\t%lld\n", d->resident );
Packit 577717
	fprintf( output, "Mem High Water Mark:\t%lld\n", d->high_water_mark );
Packit 577717
	fprintf( output, "Mem Shared:\t\t%lld\n", d->shared );
Packit 577717
	fprintf( output, "Mem Text:\t\t%lld\n", d->text );
Packit 577717
	fprintf( output, "Mem Library:\t\t%lld\n", d->library );
Packit 577717
	fprintf( output, "Mem Heap:\t\t%lld\n", d->heap );
Packit 577717
	fprintf( output, "Mem Locked:\t\t%lld\n", d->locked );
Packit 577717
	fprintf( output, "Mem Stack:\t\t%lld\n", d->stack );
Packit 577717
	fprintf( output, "Mem Pagesize:\t\t%lld\n", d->pagesize );
Packit 577717
	fprintf( output, "Mem Page Table Entries:\t\t%lld\n", d->pte );
Packit 577717
	fprintf( output, "--------\n\n" );
Packit 577717
}
Packit 577717
Packit 577717
int
Packit 577717
main( int argc, char **argv )
Packit 577717
{
Packit 577717
	PAPI_dmem_info_t dmem;
Packit 577717
	long long value[7];
Packit 577717
	int retval, i = 0, j = 0;
Packit 577717
	double *m[7];
Packit 577717
Packit 577717
	tests_quiet( argc, argv );	/* Set TESTS_QUIET variable */
Packit 577717
	retval = PAPI_library_init( PAPI_VER_CURRENT );
Packit 577717
	if ( retval != PAPI_VER_CURRENT )
Packit 577717
		test_fail( __FILE__, __LINE__, "PAPI_library_init", retval );
Packit 577717
Packit 577717
	for ( i = 0; i < 7; i++ ) {
Packit 577717
		retval = PAPI_get_dmem_info( &dmem );
Packit 577717
		if ( retval != PAPI_OK )
Packit 577717
			test_fail( __FILE__, __LINE__, "PAPI_get_dmem_info", retval );
Packit 577717
/*	   dump_memory_info(stdout,&dmem); */
Packit 577717
		value[i] = dmem.size;
Packit 577717
		m[i] = ( double * ) malloc( ALLOCMEM * sizeof ( double ) );
Packit 577717
		touch_dummy( m[j], ALLOCMEM );
Packit 577717
	}
Packit 577717
Packit 577717
	if ( !TESTS_QUIET ) {
Packit 577717
		printf( "Test case:  Dynamic Memory Information.\n" );
Packit 577717
		dump_memory_info( stdout, &dmem );
Packit 577717
		printf
Packit 577717
			( "------------------------------------------------------------------------\n" );
Packit 577717
		for ( i = 0; i < 7; i++ )
Packit 577717
			printf( "Malloc additional: %d KB  Memory Size in KB: %d\n",
Packit 577717
					( int ) ( ( sizeof ( double ) * ALLOCMEM ) / 1024 ),
Packit 577717
					( int ) value[i] );
Packit 577717
		printf
Packit 577717
			( "------------------------------------------------------------------------\n" );
Packit 577717
	}
Packit 577717
	if ( value[6] >= value[5] && value[5] >= value[4] && value[4] >= value[3]
Packit 577717
		 && value[3] >= value[2] && value[2] >= value[1] &&
Packit 577717
		 value[1] >= value[0] )
Packit 577717
		test_pass( __FILE__ );
Packit 577717
	else
Packit 577717
		test_fail( __FILE__, __LINE__, "Calculating Resident Memory",
Packit 577717
				   ( int ) value[6] );
Packit 577717
Packit 577717
	return 1;
Packit 577717
}