59 lines
1.2 KiB
C
59 lines
1.2 KiB
C
/*
|
|
wrapper functions for system malloc -- keep malloc stats.
|
|
Truilkan@TMI - 92/04/17
|
|
*/
|
|
|
|
#define IN_MALLOC_WRAPPER
|
|
#define NO_OPCODES
|
|
#include "std.h"
|
|
#include "my_malloc.h"
|
|
#include "lpc_incl.h"
|
|
#include "comm.h"
|
|
|
|
typedef struct stats_s {
|
|
unsigned int free_calls, alloc_calls, realloc_calls;
|
|
} stats_t;
|
|
|
|
static stats_t stats;
|
|
|
|
void wrappedmalloc_init()
|
|
{
|
|
stats.free_calls = 0;
|
|
stats.alloc_calls = 0;
|
|
stats.realloc_calls = 0;
|
|
}
|
|
|
|
INLINE void *wrappedrealloc (void * ptr, int size)
|
|
{
|
|
stats.realloc_calls++;
|
|
return (void *) REALLOC(ptr, size);
|
|
}
|
|
|
|
INLINE void *wrappedmalloc (int size)
|
|
{
|
|
stats.alloc_calls++;
|
|
return (void *) MALLOC(size);
|
|
}
|
|
|
|
INLINE void *wrappedcalloc (int nitems, int size)
|
|
{
|
|
stats.alloc_calls++;
|
|
return (void *) CALLOC(nitems, size);
|
|
}
|
|
|
|
INLINE void wrappedfree (void * ptr)
|
|
{
|
|
stats.free_calls++;
|
|
FREE(ptr);
|
|
}
|
|
|
|
void dump_malloc_data (outbuffer_t * ob)
|
|
{
|
|
outbuf_add(ob, "using wrapped malloc:\n\n");
|
|
outbuf_addv(ob, "#alloc calls: %10lu\n", stats.alloc_calls);
|
|
outbuf_addv(ob, "#free calls: %10lu\n", stats.free_calls);
|
|
outbuf_addv(ob, "#alloc - #free: %10lu\n",
|
|
stats.alloc_calls - stats.free_calls);
|
|
outbuf_addv(ob, "#realloc calls: %10lu\n", stats.realloc_calls);
|
|
}
|