31#define MEM_PROLOG (2*sizeof(void *))
39#define MEM_EPILOG_1 0xC
40#define MEM_EPILOG_2 0xA
41#define MEM_EPILOG_3 0xC
42#define MEM_EPILOG_4 0xA
103 mem_ptr->
line = line;
107 MEMDBG(
"%p: Re-allocated: %lu bytes from File: %s Line: %d\n",
108 mem_ptr->
ptr, (
unsigned long ) size,
file, line );
109 return ( mem_ptr->
ptr );
119 memset( ptr, 0, size * nmemb );
136 MEMDBG(
"Attempting to allocate %lu bytes from File: %s Line: %d\n",
137 (
unsigned long ) size,
file, line );
141 ptr = (
void * ) malloc( nsize );
161 MEMDBG(
"%p: Allocated %lu bytes from File: %s Line: %d\n",
162 mem_ptr->
ptr, (
unsigned long ) size,
file, line );
178 size = strlen(
s ) + 1;
184 memcpy( ptr,
s, size );
205 if ( ptr ==
tmp->ptr ) {
209 MEMDBG(
"%p: Freeing %d bytes from File: %s Line: %d\n",
236 MEMDBG(
"%p: Freeing %d bytes from File: %s Line: %d\n", mem_ptr->
ptr,
252 fprintf(
stderr,
"%p: Allocated %d bytes from File: %s Line: %d\n", ptr,
255 fprintf(
stderr,
"%p: Allocated %d bytes\n", ptr, mem_ptr->
size );
316 LEAKDBG(
"MEMORY LEAK: %p of %d bytes, from File: %s Line: %d\n",
326 LEAKDBG(
"TOTAL MEMORY LEAK: %d bytes.\n", cnt );
349 if ( !tmp_ptr || !ptr )
361 if ( ( mem_ptr = (
pmem_t * ) malloc(
sizeof (
pmem_t ) ) ) == NULL )
365 mem_ptr->
size = size;
366 mem_ptr->
next = NULL;
367 mem_ptr->
prev = NULL;
371 mem_ptr->
line = line;
423 char *chptr = (
char * ) mem_ptr->
ptr + mem_ptr->
size;
451 ptr = ( (
char * )
tmp->ptr ) +
tmp->size;
462 LEAKDBG(
"Buffer Overflow[%d] for %p allocated from %s at line %d\n",
482 LEAKDBG(
"%d Total Buffer overflows detected!\n", fnd );
Return codes and api definitions.
#define LEAKDBG(format, args...)
#define MEMDBG(format, args...)
static pmem_t * get_mem_ptr(void *ptr)
int _papi_mem_overhead(int type)
void * _papi_realloc(char *file, int line, void *ptr, size_t size)
char * _papi_strdup(char *file, int line, const char *s)
void * _papi_calloc(char *file, int line, size_t nmemb, size_t size)
static void remove_mem_ptr(pmem_t *)
void _papi_mem_print_stats()
static pmem_t * init_mem_ptr(void *, int, char *, int)
static void insert_mem_ptr(pmem_t *)
void * _papi_malloc(char *file, int line, size_t size)
void _papi_mem_cleanup_all()
void _papi_free(char *file, int line, void *ptr)
static int set_epilog(pmem_t *mem_ptr)
int _papi_valid_free(char *file, int line, void *ptr)
static int _papi_mem_check_buf_overflow(pmem_t *tmp)
void _papi_mem_print_info(void *ptr)
int _papi_mem_check_all_overflow()
#define PAPI_MEM_OVERHEAD
#define PAPI_MEM_LIB_OVERHEAD
char file[DEBUG_FILE_LEN]
inline_static int _papi_hwi_lock(int lck)
inline_static int _papi_hwi_unlock(int lck)