webengine/osswebengine/MemoryManager/Inc/DLA.h
changeset 10 a359256acfc6
parent 1 7c90e6132015
--- a/webengine/osswebengine/MemoryManager/Inc/DLA.h	Fri Jul 03 15:54:40 2009 +0100
+++ b/webengine/osswebengine/MemoryManager/Inc/DLA.h	Thu Aug 27 07:44:59 2009 +0300
@@ -616,6 +616,8 @@
   struct malloc_tree_chunk* child[2];
   struct malloc_tree_chunk* parent;
   bindex_t                  index;
+  size_t            pageout;  /* chunk pageout flag  */
+  size_t            npages;   /* chunk pageout size */
 };
 
 typedef struct malloc_tree_chunk  tchunk;
@@ -652,10 +654,10 @@
 struct malloc_state {
   binmap_t   smallmap;
   binmap_t   treemap;
-  size_t     dvsize;
+  size_t     dvsize; // unused
   size_t     topsize;
   TUint8*      least_addr;
-  mchunkptr  dv;
+  mchunkptr  dv; // unused
   mchunkptr  top;
   size_t     trim_check;
   size_t     magic;
@@ -1045,4 +1047,46 @@
 		unsigned size;
 	};
 	/******CODE TO SUPORT SLAB ALLOCATOR******/
+	
+	/****** COMMON DEFS CHUNK PAGE MAP/UNMAP *****/
+#define CHUNK_PAGEOUT_THESHOLD (12*1024U)
+#define CHUNK_PAGE_OUT_FLAG (98989U)
+#define tchunk_page_align(p)    (char*)page_align((size_t)(p) + sizeof(tchunk) + TOP_FOOT_SIZE)
+#define address_offset(HIGH, LOW)    (size_t)((char*)(HIGH) - (char*)(LOW))
+
+/* tree_malloc_chunk pageout header operations */
+#define set_tchunk_mem_pageout(TP, NPAGES) \
+    { (TP)->pageout = CHUNK_PAGE_OUT_FLAG; (TP)->npages = (NPAGES); }
+#define reset_tchunk_mem_pageout(TP) \
+    { (TP)->pageout = 0;  (TP)->npages = 0; }  
+#define page_not_in_memory(P, S) \
+    (  !is_small(S) &&  ( (((tchunkptr)(P))->pageout==CHUNK_PAGE_OUT_FLAG)?1:0 )  )    
+
+	
+#ifdef DL_CHUNK_MEM_DEBUG
+#define ASSERT_RCHUNK_SIZE() \
+    {RChunk rchunk; rchunk.SetHandle(iChunkHandle); assert(iChunkSize == rchunk.Size());}
+#define TRACE_DL_CHUNK_MAP(c_addr, csize, page_addr, page_size) \
+    MEM_LOGF(_L8("DL_CHUNK_MAP$$:: chunk_addr=%x, chunk_size=%d, page_addr=%x, page_size=%d"), c_addr, csize, page_addr, (page_size));
+#define TRACE_DL_CHUNK_UNMAP(c_addr, csize, page_addr, page_size) \
+    MEM_LOGF(_L8("DL_CHUNK_UNMAP:: chunk_addr=%x, chunk_size=%d, page_addr=%x, page_size=%d"), c_addr, csize, page_addr, (page_size));
+#else
+#define ASSERT_RCHUNK_SIZE()
+#define TRACE_DL_CHUNK_MAP(c_addr, csize, p_addr, psize)
+#define TRACE_DL_CHUNK_UNMAP(c_addr, csize, p_addr, psize)
+#endif	
+
+#ifdef OOM_LOGGING	
+#define TRACE_UNMAPPED_CHUNK(SZ) \
+    iUnmappedChunkSize += (SZ);	
+#define MEM_DUMP_OOM_LOGS(NB, MSG) \
+    MEM_LOG(MSG); \
+    C_LOG(MSG); \
+    dump_heap_logs(NB)
+#else
+#define MEM_DUMP_OOM_LOGS(NB, MSG)
+#define TRACE_UNMAPPED_CHUNK(SZ)
+#endif
+	
+	/****** COMMON DEFS PAGE MAP/UNMAP *****/
 #endif/*__DLA__*/