#ifndef __TRACE_H
#define __TRACE_H
#ifndef _MALLOC_BUILDING_CODES_
#include <sys/kdebug.h>
#define MALLOC_TRACE(code,arg1,arg2,arg3,arg4) \
{ if (malloc_tracing_enabled) { kdebug_trace(code, arg1, arg2, arg3, arg4); } }
#define TRACE_CODE(name, subclass, code) \
static const int TRACE_##name = KDBG_EVENTID(DBG_UMALLOC, subclass, code)
#else
# define DBG_UMALLOC 51
# define DBG_UMALLOC_EXTERNAL 0x1
# define DBG_UMALLOC_INTERNAL 0x2
# define STR(x) #x
# define TRACE_CODE(name, subclass, code) \
printf("0x%x\t%s\n", ((DBG_UMALLOC << 24) | ((subclass & 0xff) << 16) | ((code & 0x3fff) << 2)), STR(name))
#endif
TRACE_CODE(malloc, DBG_UMALLOC_EXTERNAL, 0x01);
TRACE_CODE(free, DBG_UMALLOC_EXTERNAL, 0x02);
TRACE_CODE(realloc, DBG_UMALLOC_EXTERNAL, 0x03);
TRACE_CODE(memalign, DBG_UMALLOC_EXTERNAL, 0x04);
TRACE_CODE(nano_malloc, DBG_UMALLOC_INTERNAL, 0x1);
TRACE_CODE(tiny_malloc, DBG_UMALLOC_INTERNAL, 0x2);
TRACE_CODE(small_malloc, DBG_UMALLOC_INTERNAL, 0x3);
TRACE_CODE(large_malloc, DBG_UMALLOC_INTERNAL, 0x4);
TRACE_CODE(nano_free, DBG_UMALLOC_INTERNAL, 0x5);
TRACE_CODE(tiny_free, DBG_UMALLOC_INTERNAL, 0x6);
TRACE_CODE(small_free, DBG_UMALLOC_INTERNAL, 0x7);
TRACE_CODE(large_free, DBG_UMALLOC_INTERNAL, 0x8);
#endif // __TRACE_H