From 93e72649dcae4c81dd2c6f8eac2b54db95c3550d Mon Sep 17 00:00:00 2001 From: Jeroen Domburg Date: Mon, 19 Dec 2016 18:13:36 +0800 Subject: [PATCH] Fix memory debugging code --- components/freertos/heap_regions.c | 4 ++-- .../freertos/include/freertos/heap_regions_debug.h | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/components/freertos/heap_regions.c b/components/freertos/heap_regions.c index a7c9606036..5cece756c0 100644 --- a/components/freertos/heap_regions.c +++ b/components/freertos/heap_regions.c @@ -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 diff --git a/components/freertos/include/freertos/heap_regions_debug.h b/components/freertos/include/freertos/heap_regions_debug.h index 6ab4681f18..dca9531d7e 100644 --- a/components/freertos/include/freertos/heap_regions_debug.h +++ b/components/freertos/include/freertos/heap_regions_debug.h @@ -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()\ {\