84 #define MPU_WRAPPERS_INCLUDED_FROM_API_FILE 89 #undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE 92 #define configADJUSTED_HEAP_SIZE ( configTOTAL_HEAP_SIZE - portBYTE_ALIGNMENT ) 97 static void prvHeapInit(
void );
112 #define heapMINIMUM_BLOCK_SIZE ( ( size_t ) ( heapSTRUCT_SIZE * 2 ) ) 128 #define prvInsertBlockIntoFreeList( pxBlockToInsert ) \ 130 BlockLink_t *pxIterator; \ 133 xBlockSize = pxBlockToInsert->xBlockSize; \ 137 for( pxIterator = &xStart; pxIterator->pxNextFreeBlock->xBlockSize < xBlockSize; pxIterator = pxIterator->pxNextFreeBlock ) \ 144 pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock; \ 145 pxIterator->pxNextFreeBlock = pxBlockToInsert; \ 151 BlockLink_t *pxBlock, *pxPreviousBlock, *pxNewBlockLink;
153 void *pvReturn =
NULL;
159 if( xHeapHasBeenInitialised ==
pdFALSE )
162 xHeapHasBeenInitialised =
pdTRUE;
167 if( xWantedSize > 0 )
169 xWantedSize += heapSTRUCT_SIZE;
172 if( ( xWantedSize & portBYTE_ALIGNMENT_MASK ) != 0 )
183 pxPreviousBlock = &xStart;
187 pxPreviousBlock = pxBlock;
192 if( pxBlock != &xEnd )
196 pvReturn = (
void * ) ( ( ( uint8_t * ) pxPreviousBlock->
pxNextFreeBlock ) + heapSTRUCT_SIZE );
208 pxNewBlockLink = (
void * ) ( ( ( uint8_t * ) pxBlock ) + xWantedSize );
227 #if( configUSE_MALLOC_FAILED_HOOK == 1 ) 229 if( pvReturn ==
NULL )
231 extern void vApplicationMallocFailedHook(
void );
232 vApplicationMallocFailedHook();
243 uint8_t *puc = ( uint8_t * ) pv;
250 puc -= heapSTRUCT_SIZE;
254 pxLink = (
void * ) puc;
270 return xFreeBytesRemaining;
280 static void prvHeapInit(
void )
283 uint8_t *pucAlignedHeap;
299 pxFirstFreeBlock = (
void * ) pucAlignedHeap;
struct A_BLOCK_LINK * pxNextFreeBlock
#define configADJUSTED_HEAP_SIZE
void vTaskSuspendAll(void) PRIVILEGED_FUNCTION
void vPortInitialiseBlocks(void)
#define heapMINIMUM_BLOCK_SIZE
#define configTOTAL_HEAP_SIZE
#define prvInsertBlockIntoFreeList(pxBlockToInsert)
struct A_BLOCK_LINK BlockLink_t
#define traceFREE(pvAddress, uiSize)
BaseType_t xTaskResumeAll(void) PRIVILEGED_FUNCTION
size_t xPortGetFreeHeapSize(void)
#define portPOINTER_SIZE_TYPE
#define portBYTE_ALIGNMENT
void * pvPortMalloc(size_t xWantedSize)
#define traceMALLOC(pvAddress, uiSize)