/* memtrace.h */

/* Call the following to set up memory tracing. */
extern void memtrace_init(void);

/* Do not call the following, an atexit() handler
   does it for us */
extern void memtrace_finish(void);

/* Internal routines - do not call */
extern void memtrace_addentry(int base, int size, int method);
extern void memtrace_removeentry(int base);

/* The following behaves like "calloc()" */
void *memtrace_calloc(size_t nmemb, size_t size);

/* ...and "free()" */
void memtrace_free(void *ptr);

/* ...and "malloc()" */
void *memtrace_malloc(size_t size);

/* ...and finally, "realloc()" */
void *memtrace_realloc(void *ptr, size_t size);

/* debug routines */
extern void memtrace_checkclaims(FILE *stream);
extern void memtrace_dumpsixtyfour(int address, FILE *stream);
