/* * These are here mainly so that I can link against * debugmalloc.c instead and not recompile the world. */ #include #define NOPLAN9DEFINES #include static Lock malloclock; void* p9malloc(ulong n) { void *v; if(n == 0) n++; lock(&malloclock); v = malloc(n); unlock(&malloclock); print("p9malloc %lud => %p; pc %lux\n", n, v, getcallerpc(&n)); return v; } void p9free(void *v) { if(v == nil) return; lock(&malloclock); print("p9free %p; pc %lux\n", v, getcallerpc(&v)); free(v); unlock(&malloclock); } void* p9calloc(ulong a, ulong b) { void *v; if(a*b == 0) a = b = 1; lock(&malloclock); v = calloc(a*b, 1); unlock(&malloclock); print("p9calloc %lud %lud => %p; pc %lux\n", a, b, v, getcallerpc(&a)); return v; } void* p9realloc(void *v, ulong n) { void *vv; lock(&malloclock); vv = realloc(v, n); unlock(&malloclock); print("p9realloc %p %lud => %p; pc %lux\n", v, n, vv, getcallerpc(&v)); return vv; }