From 4c04d2485a337495ea85e493803f927e38899655 Mon Sep 17 00:00:00 2001 From: Gaurav Aggarwal Date: Wed, 29 May 2024 16:47:00 +0000 Subject: [PATCH] Revert "Remove useless alignment calculations and increase heap usage size" This reverts commit 7832a4bc118661676c4aaa377e412c35ec0b728c. --- portable/MemMang/heap_1.c | 7 +++++-- portable/MemMang/heap_2.c | 11 +++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/portable/MemMang/heap_1.c b/portable/MemMang/heap_1.c index 3f89792b1..56dc67bf8 100644 --- a/portable/MemMang/heap_1.c +++ b/portable/MemMang/heap_1.c @@ -50,6 +50,9 @@ #error This file must not be used if configSUPPORT_DYNAMIC_ALLOCATION is 0 #endif +/* A few bytes might be lost to byte aligning the heap start address. */ +#define configADJUSTED_HEAP_SIZE ( configTOTAL_HEAP_SIZE - portBYTE_ALIGNMENT ) + /* Allocate the memory for the heap. */ #if ( configAPPLICATION_ALLOCATED_HEAP == 1 ) @@ -90,7 +93,7 @@ void * pvPortMalloc( size_t xWantedSize ) /* Check there is enough room left for the allocation and. */ if( ( xWantedSize > 0 ) && /* valid size */ - ( ( xNextFreeByte + xWantedSize ) < configTOTAL_HEAP_SIZE )) /* check for overflow */ + ( ( xNextFreeByte + xWantedSize ) < configADJUSTED_HEAP_SIZE )) /* check for overflow */ { /* Return the next free byte then increment the index past this * block. */ @@ -136,7 +139,7 @@ void vPortInitialiseBlocks( void ) size_t xPortGetFreeHeapSize( void ) { - return( configTOTAL_HEAP_SIZE - xNextFreeByte ); + return( configADJUSTED_HEAP_SIZE - xNextFreeByte ); } /*-----------------------------------------------------------*/ diff --git a/portable/MemMang/heap_2.c b/portable/MemMang/heap_2.c index 522717205..c1b35b911 100644 --- a/portable/MemMang/heap_2.c +++ b/portable/MemMang/heap_2.c @@ -56,6 +56,9 @@ #define configHEAP_CLEAR_MEMORY_ON_FREE 0 #endif +/* A few bytes might be lost to byte aligning the heap start address. */ +#define configADJUSTED_HEAP_SIZE ( configTOTAL_HEAP_SIZE - portBYTE_ALIGNMENT ) + /* Assumes 8bit bytes! */ #define heapBITS_PER_BYTE ( ( size_t ) 8 ) @@ -108,7 +111,7 @@ PRIVILEGED_DATA static BlockLink_t xStart, xEnd; /* Keeps track of the number of free bytes remaining, but says nothing about * fragmentation. */ -PRIVILEGED_DATA static size_t xFreeBytesRemaining = configTOTAL_HEAP_SIZE; +PRIVILEGED_DATA static size_t xFreeBytesRemaining = configADJUSTED_HEAP_SIZE; /* Indicates whether the heap has been initialised or not. */ PRIVILEGED_DATA static BaseType_t xHeapHasBeenInitialised = pdFALSE; @@ -373,13 +376,13 @@ static void prvHeapInit( void ) /* PRIVILEGED_FUNCTION */ xStart.xBlockSize = ( size_t ) 0; /* xEnd is used to mark the end of the list of free blocks. */ - xEnd.xBlockSize = configTOTAL_HEAP_SIZE; + xEnd.xBlockSize = configADJUSTED_HEAP_SIZE; xEnd.pxNextFreeBlock = NULL; /* To start with there is a single free block that is sized to take up the * entire heap space. */ pxFirstFreeBlock = ( BlockLink_t * ) pucAlignedHeap; - pxFirstFreeBlock->xBlockSize = configTOTAL_HEAP_SIZE; + pxFirstFreeBlock->xBlockSize = configADJUSTED_HEAP_SIZE; pxFirstFreeBlock->pxNextFreeBlock = &xEnd; } /*-----------------------------------------------------------*/ @@ -391,7 +394,7 @@ static void prvHeapInit( void ) /* PRIVILEGED_FUNCTION */ */ void vPortHeapResetState( void ) { - xFreeBytesRemaining = configTOTAL_HEAP_SIZE; + xFreeBytesRemaining = configADJUSTED_HEAP_SIZE; xHeapHasBeenInitialised = pdFALSE; }