Blame


1 76193d7c 2003-09-30 devnull #include "threadimpl.h"
2 76193d7c 2003-09-30 devnull
3 76193d7c 2003-09-30 devnull static long totalmalloc;
4 76193d7c 2003-09-30 devnull
5 76193d7c 2003-09-30 devnull void*
6 76193d7c 2003-09-30 devnull _threadmalloc(long size, int z)
7 76193d7c 2003-09-30 devnull {
8 76193d7c 2003-09-30 devnull void *m;
9 76193d7c 2003-09-30 devnull
10 76193d7c 2003-09-30 devnull m = malloc(size);
11 76193d7c 2003-09-30 devnull if (m == nil)
12 76193d7c 2003-09-30 devnull sysfatal("Malloc of size %ld failed: %r\n", size);
13 76193d7c 2003-09-30 devnull setmalloctag(m, getcallerpc(&size));
14 76193d7c 2003-09-30 devnull totalmalloc += size;
15 76193d7c 2003-09-30 devnull if (size > 1000000) {
16 76193d7c 2003-09-30 devnull fprint(2, "Malloc of size %ld, total %ld\n", size, totalmalloc);
17 76193d7c 2003-09-30 devnull abort();
18 76193d7c 2003-09-30 devnull }
19 76193d7c 2003-09-30 devnull if (z)
20 76193d7c 2003-09-30 devnull _threadmemset(m, 0, size);
21 76193d7c 2003-09-30 devnull return m;
22 76193d7c 2003-09-30 devnull }
23 76193d7c 2003-09-30 devnull
24 76193d7c 2003-09-30 devnull void
25 76193d7c 2003-09-30 devnull _threadsysfatal(char *fmt, va_list arg)
26 76193d7c 2003-09-30 devnull {
27 76193d7c 2003-09-30 devnull char buf[1024]; /* size doesn't matter; we're about to exit */
28 76193d7c 2003-09-30 devnull
29 76193d7c 2003-09-30 devnull vseprint(buf, buf+sizeof(buf), fmt, arg);
30 76193d7c 2003-09-30 devnull if(argv0)
31 76193d7c 2003-09-30 devnull fprint(2, "%s: %s\n", argv0, buf);
32 76193d7c 2003-09-30 devnull else
33 76193d7c 2003-09-30 devnull fprint(2, "%s\n", buf);
34 76193d7c 2003-09-30 devnull threadexitsall(buf);
35 76193d7c 2003-09-30 devnull }