merge with trunk at r31523
[blender.git] / intern / guardedalloc / MEM_guardedalloc.h
index 6b78b0b6bdc987ad8ea798f6fe8018bedd6a00c7..b909ac9e051517d10f21be4b6745d1b0d7a629b7 100644 (file)
@@ -72,7 +72,11 @@ extern "C" {
         * Release memory previously allocatred by this module. 
         */
        short MEM_freeN(void *vmemh);
-
+       short WMEM_freeN(void *vmemh);
+       
+       short _MEM_freeN(void *vmemh, char *file, int line);
+       #define MEM_freeN(vmemh)        _MEM_freeN(vmemh, __FILE__, __LINE__)
+       
 
        /**
         * Return zero if memory is not in allocated list
@@ -144,11 +148,51 @@ extern "C" {
        uintptr_t MEM_get_mapped_memory_in_use(void);
        int MEM_get_memory_blocks_in_use(void);
 
-       /*reset the peak memory statistic to zero*/
-       void MEM_reset_peak_memory(void);
+/********* Internal structs.   They're only here for the MEM_OVERHEAD macro.*********/
+
+/*BMESH_TODO/XXX: note to self, don't merge this into trunk*/
+
+/* all memory chunks are put in linked lists */
+typedef struct localLink
+{
+       struct localLink *next,*prev;
+} localLink;
+
+typedef struct localListBase
+{
+       void *first, *last;
+} localListBase;
+
+       /* note: keep this struct aligned (e.g., irix/gcc) - Hos */
+typedef struct MemHead {
+       int tag1;
+       size_t len;
+       struct MemHead *next,*prev;
+       const char * name;
+       const char * nextname;
+       int tag2;
+       int mmap;       /* if true, memory was mmapped */
+#ifdef DEBUG_MEMCOUNTER
+       int _count;
+#endif
+} MemHead;
+
+typedef struct MemTail {
+       int tag3, tag4;
+} MemTail;
+
+/*memory bias to hopefully account 
+  for allocation overhead from
+  the system allocator.*/
+#define MEM_OVERHEADBIAS       32
+
+#define MEM_OVERHEAD   (sizeof(MemHead) + sizeof(MemTail) + MEM_OVERHEADBIAS)
+
+/*reset the peak memory statistic to zero*/
+void MEM_reset_peak_memory(void);
 
-       /*get the peak memory usage in bytes, including mmap allocations*/
-       uintptr_t MEM_get_peak_memory(void);
+/*get the peak memory usage in bytes, including mmap allocations*/
+uintptr_t MEM_get_peak_memory(void);
 
 #ifdef __cplusplus
 }