]> granicus.if.org Git - esp-idf/commitdiff
Fix memory debugging code
authorJeroen Domburg <jeroen@espressif.com>
Mon, 19 Dec 2016 10:13:36 +0000 (18:13 +0800)
committerJeroen Domburg <jeroen@espressif.com>
Mon, 19 Dec 2016 10:48:08 +0000 (18:48 +0800)
components/freertos/heap_regions.c
components/freertos/include/freertos/heap_regions_debug.h

index a7c9606036d73c851d9e887253c03cee6cbe8b62..5cece756c081f1cdb61512543be1d9d92b0614a3 100644 (file)
@@ -174,7 +174,7 @@ static void prvInsertBlockIntoFreeList( BlockLink_t *pxBlockToInsert );
 /*-----------------------------------------------------------*/
 
 /* The size of the structure placed at the beginning of each allocated memory
-block must by correctly byte aligned. */
+block must be correctly byte aligned. */
 static const uint32_t uxHeapStructSize  = ( ( sizeof ( BlockLink_t ) + BLOCK_HEAD_LEN + BLOCK_TAIL_LEN + ( portBYTE_ALIGNMENT - 1 ) ) & ~portBYTE_ALIGNMENT_MASK );
 
 /* Create a couple of list links to mark the start and end of the list. */
@@ -583,7 +583,7 @@ const HeapRegionTagged_t *pxHeapRegion;
 
         #if (configENABLE_MEMORY_DEBUG == 1)
         {
-            mem_debug_init(uxHeapStructSize, &xStart, pxEnd, &xMallocMutex, xBlockAllocatedBit);
+            mem_debug_init(uxHeapStructSize, &xStart, pxEnd, &xMallocMutex);
             mem_check_all(0);
         }
         #endif
index 6ab4681f18f7d254c777c9ea1d9b422d553fde27..dca9531d7ecce5a5a4226e1b9bcda5cadabfc161 100644 (file)
@@ -22,9 +22,10 @@ typedef struct {
 
 /* Please keep this definition same as BlockLink_t */
 typedef struct _os_block_t {
-    struct _os_block_t *next;
-    size_t   size;
-    unsigned int xtag;
+    struct _os_block_t *next;               /*<< The next free block in the list. */
+    int size: 24;                           /*<< The size of the free block. */
+    int xtag: 7;                            /*<< Tag of this region */
+    int xAllocated: 1;                      /*<< 1 if allocated */
 }os_block_t;
 
 typedef struct {
@@ -50,7 +51,7 @@ typedef struct _mem_dbg_ctl{
 #define OS_BLOCK(_b)   ((os_block_t*)((debug_block_t*)((char*)(_b) + BLOCK_HEAD_LEN)))
 #define DEBUG_BLOCK(_b)  ((debug_block_t*)((char*)(_b) - BLOCK_HEAD_LEN))
 #define HEAD_DOG(_b) ((_b)->head.dog)
-#define TAIL_DOG(_b) (*(unsigned int*)((char*)(_b) + (((_b)->os_block.size & (~g_alloc_bit) ) - BLOCK_TAIL_LEN)))
+#define TAIL_DOG(_b) (*(unsigned int*)((char*)(_b) + (((_b)->os_block.size ) - BLOCK_TAIL_LEN)))
 
 #define DOG_ASSERT()\
 {\