1 /******************************************************************************
3 A caching memory allocator-- #included whole by memory.C
5 Orion Sky Lawlor, olawlor@acm.org, 6/22/2001
7 *****************************************************************************/
9 #if ! CMK_MEMORY_BUILD_OS
10 /* Use Gnumalloc as meta-meta malloc fallbacks (mm_*) */
11 #include "memory-gnu.c"
15 static int inMemVerbose
=0;
17 static void meta_init(char **argv
)
19 if (CmiMyRank()==0) memInit
=1;
21 if (memInit
) CmiPrintf("CMI_MEMORY(%d)> Called meta_init\n", CmiMyPe());
24 static void *meta_malloc(size_t size
)
26 void *ret
=mm_malloc(size
);
27 if (memInit
) CmiPrintf("CMI_MEMORY(%d)> malloc(%d) => %p\n",
29 if (memInit
>1) {int memBack
=memInit
; memInit
=0; CmiPrintStackTrace(0); memInit
=memBack
;}
33 static void meta_free(void *mem
)
35 if (memInit
&& !inMemVerbose
) {
37 CmiPrintf("CMI_MEMORY(%d)> free(%p)\n", CmiMyPe(),mem
);
40 if (memInit
>1) {int memBack
=memInit
; memInit
=0; CmiPrintStackTrace(0); memInit
=memBack
;}
44 static void *meta_calloc(size_t nelem
, size_t size
)
46 void *ret
=mm_calloc(nelem
,size
);
47 if (memInit
) CmiPrintf("CMI_MEMORY(%d)> calloc(%d,%d) => %p\n",
48 CmiMyPe(),nelem
,size
,ret
);
52 static void meta_cfree(void *mem
)
54 if (memInit
) CmiPrintf("CMI_MEMORY(%d)> free(%p)\n",
59 static void *meta_realloc(void *mem
, size_t size
)
61 void *ret
=mm_realloc(mem
,size
);
62 if (memInit
) CmiPrintf("CMI_MEMORY(%d)> realloc(%p,%d) => %p\n",
63 CmiMyPe(),mem
,size
,ret
);
67 static void *meta_memalign(size_t align
, size_t size
)
69 void *ret
=mm_memalign(align
,size
);
70 if (memInit
) CmiPrintf("CMI_MEMORY(%d)> memalign(%p,%d) => %p\n",
71 CmiMyPe(),align
,size
,ret
);
75 static int meta_posix_memalign(void **outptr
, size_t align
, size_t size
)
77 void *origptr
= *outptr
;
78 int ret
=mm_posix_memalign(outptr
,align
,size
);
79 if (memInit
) CmiPrintf("CMI_MEMORY(%d)> posix_memalign(%p,%p,%d), %p => %d, %p\n",
80 CmiMyPe(),outptr
,align
,size
,origptr
,ret
,*outptr
);
84 static void *meta_aligned_alloc(size_t align
, size_t size
)
86 void *ret
=mm_aligned_alloc(align
,size
);
87 if (memInit
) CmiPrintf("CMI_MEMORY(%d)> aligned_alloc(%p,%d) => %p\n",
88 CmiMyPe(),align
,size
,ret
);
92 static void *meta_valloc(size_t size
)
94 void *ret
=mm_valloc(size
);
95 if (memInit
) CmiPrintf("CMI_MEMORY(%d)> valloc(%d) => %p\n",
100 static void *meta_pvalloc(size_t size
)
102 void *ret
=mm_pvalloc(size
);
103 if (memInit
) CmiPrintf("CMI_MEMORY(%d)> pvalloc(%d) => %p\n",