commit - 3ef80ba5f5c29a8367d32353a9620ec4cf9cb880
commit + 7bf2db4c2ae30c0f7b320e57060715bf6279e98a
blob - 9132235b3419d7be512670cb6002f865119f72e7
blob + 7b590bc4b5971d478a57b5b8598659cf147b0d22
--- src/cmd/9term/malloc.c
+++ src/cmd/9term/malloc.c
#define NOPLAN9DEFINES
#include <libc.h>
-static Lock malloclock;
-
void*
p9malloc(ulong n)
{
if(n == 0)
n++;
- lock(&malloclock);
v = malloc(n);
- unlock(&malloclock);
print("p9malloc %lud => %p; pc %lux\n", n, v, getcallerpc(&n));
return v;
}
{
if(v == nil)
return;
- lock(&malloclock);
print("p9free %p; pc %lux\n", v, getcallerpc(&v));
free(v);
- unlock(&malloclock);
}
void*
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 *vv;
- lock(&malloclock);
vv = realloc(v, n);
- unlock(&malloclock);
print("p9realloc %p %lud => %p; pc %lux\n", v, n, vv, getcallerpc(&v));
return vv;
}
blob - 51a2c61f52ecf52d32fcd4e61e08862d481f774e
blob + 744af835ee15ac8b3ae73b8da2ffc74130b8e25b
--- src/lib9/debugmalloc.c
+++ src/lib9/debugmalloc.c
* The Unix libc routines cannot be trusted to do their own locking.
* Sad but apparently true.
*/
-static Lock malloclock;
static int mallocpid;
/*
if(n == 0)
n++;
/*fprint(2, "%s %d malloc\n", argv0, getpid()); */
- lock(&malloclock);
mallocpid = getpid();
v = malloc(n+Overhead);
v = mark(v, getcallerpc(&n), n, MallocMagic);
- unlock(&malloclock);
/*fprint(2, "%s %d donemalloc\n", argv0, getpid()); */
return v;
}
return;
/*fprint(2, "%s %d free\n", argv0, getpid()); */
- lock(&malloclock);
mallocpid = getpid();
v = mark(v, getcallerpc(&v), 0, FreeMagic);
free(v);
- unlock(&malloclock);
/*fprint(2, "%s %d donefree\n", argv0, getpid()); */
}
void *v;
/*fprint(2, "%s %d calloc\n", argv0, getpid()); */
- lock(&malloclock);
mallocpid = getpid();
v = calloc(a*b+Overhead, 1);
v = mark(v, getcallerpc(&a), a*b, CallocMagic);
- unlock(&malloclock);
/*fprint(2, "%s %d donecalloc\n", argv0, getpid()); */
return v;
}
p9realloc(void *v, ulong n)
{
/*fprint(2, "%s %d realloc\n", argv0, getpid()); */
- lock(&malloclock);
mallocpid = getpid();
v = mark(v, getcallerpc(&v), 0, CheckMagic);
v = realloc(v, n+Overhead);
v = mark(v, getcallerpc(&v), n, ReallocMagic);
- unlock(&malloclock);
/*fprint(2, "%s %d donerealloc\n", argv0, getpid()); */
return v;
}
blob - 33593aa2f1889297ad847a400b8f45888e04dfc1
blob + 695ff8bc04529b709d6bd6319eb05d445008c41e
--- src/lib9/malloc.c
+++ src/lib9/malloc.c
#define NOPLAN9DEFINES
#include <libc.h>
-static Lock malloclock;
void*
p9malloc(ulong n)
{
- void *v;
-
if(n == 0)
n++;
- lock(&malloclock);
- v = malloc(n);
- unlock(&malloclock);
- return v;
+ return malloc(n);
}
void
p9free(void *v)
{
- if(v == nil)
- return;
- lock(&malloclock);
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);
- return v;
+ return calloc(a, b);
}
void*
p9realloc(void *v, ulong n)
{
- lock(&malloclock);
- v = realloc(v, n);
- unlock(&malloclock);
- return v;
+ return realloc(v, n);
}