aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/9term/malloc.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-11-06 22:16:48 +0000
committerrsc <devnull@localhost>2005-11-06 22:16:48 +0000
commite830a908498c8f0270948fd08c50f6d773315880 (patch)
treea16fe62419a4e3a95ab2d8d3a70f1a870d0bb55c /src/cmd/9term/malloc.c
parenta6c0ff35ee294c0a808e1792eb4f43820fed8f16 (diff)
downloadplan9port-e830a908498c8f0270948fd08c50f6d773315880.tar.gz
plan9port-e830a908498c8f0270948fd08c50f6d773315880.tar.bz2
plan9port-e830a908498c8f0270948fd08c50f6d773315880.zip
New 9term using rio sources more directly.
Diffstat (limited to 'src/cmd/9term/malloc.c')
-rw-r--r--src/cmd/9term/malloc.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/cmd/9term/malloc.c b/src/cmd/9term/malloc.c
new file mode 100644
index 00000000..130942bd
--- /dev/null
+++ b/src/cmd/9term/malloc.c
@@ -0,0 +1,63 @@
+/*
+ * These are here mainly so that I can link against
+ * debugmalloc.c instead and not recompile the world.
+ */
+
+#include <u.h>
+#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);
+ 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;
+}
+