Blob


1 /*
2 * These are here mainly so that I can link against
3 * debugmalloc.c instead and not recompile the world.
4 */
6 #include <u.h>
7 #define NOPLAN9DEFINES
8 #include <libc.h>
10 static Lock malloclock;
12 void*
13 p9malloc(ulong n)
14 {
15 void *v;
17 if(n == 0)
18 n++;
19 lock(&malloclock);
20 v = malloc(n);
21 unlock(&malloclock);
22 print("p9malloc %lud => %p; pc %lux\n", n, v, getcallerpc(&n));
23 return v;
24 }
26 void
27 p9free(void *v)
28 {
29 if(v == nil)
30 return;
31 lock(&malloclock);
32 print("p9free %p; pc %lux\n", v, getcallerpc(&v));
33 free(v);
34 unlock(&malloclock);
35 }
37 void*
38 p9calloc(ulong a, ulong b)
39 {
40 void *v;
42 if(a*b == 0)
43 a = b = 1;
45 lock(&malloclock);
46 v = calloc(a*b, 1);
47 unlock(&malloclock);
48 print("p9calloc %lud %lud => %p; pc %lux\n", a, b, v, getcallerpc(&a));
49 return v;
50 }
52 void*
53 p9realloc(void *v, ulong n)
54 {
55 void *vv;
57 lock(&malloclock);
58 vv = realloc(v, n);
59 unlock(&malloclock);
60 print("p9realloc %p %lud => %p; pc %lux\n", v, n, vv, getcallerpc(&v));
61 return vv;
62 }