80 #define MPU_WRAPPERS_INCLUDED_FROM_API_FILE
85 #undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
88 #define configADJUSTED_HEAP_SIZE ( configTOTAL_HEAP_SIZE - portBYTE_ALIGNMENT )
93 static void prvHeapInit(
void );
108 #define heapMINIMUM_BLOCK_SIZE ( ( size_t ) ( heapSTRUCT_SIZE * 2 ) )
124 #define prvInsertBlockIntoFreeList( pxBlockToInsert ) \
126 xBlockLink *pxIterator; \
129 xBlockSize = pxBlockToInsert->xBlockSize; \
133 for( pxIterator = &xStart; pxIterator->pxNextFreeBlock->xBlockSize < xBlockSize; pxIterator = pxIterator->pxNextFreeBlock ) \
140 pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock; \
141 pxIterator->pxNextFreeBlock = pxBlockToInsert; \
147 xBlockLink *pxBlock, *pxPreviousBlock, *pxNewBlockLink;
149 void *pvReturn =
NULL;
155 if( xHeapHasBeenInitialised ==
pdFALSE )
158 xHeapHasBeenInitialised =
pdTRUE;
163 if( xWantedSize > 0 )
165 xWantedSize += heapSTRUCT_SIZE;
168 if( ( xWantedSize & portBYTE_ALIGNMENT_MASK ) != 0 )
179 pxPreviousBlock = &xStart;
183 pxPreviousBlock = pxBlock;
188 if( pxBlock != &xEnd )
192 pvReturn = (
void * ) ( ( (
unsigned char * ) pxPreviousBlock->
pxNextFreeBlock ) + heapSTRUCT_SIZE );
204 pxNewBlockLink = (
void * ) ( ( (
unsigned char * ) pxBlock ) + xWantedSize );
223 #if( configUSE_MALLOC_FAILED_HOOK == 1 )
225 if( pvReturn ==
NULL )
227 extern void vApplicationMallocFailedHook(
void );
228 vApplicationMallocFailedHook();
239 unsigned char *puc = (
unsigned char * ) pv;
246 puc -= heapSTRUCT_SIZE;
250 pxLink = (
void * ) puc;
266 return xFreeBytesRemaining;
276 static void prvHeapInit(
void )
279 unsigned char *pucAlignedHeap;
295 pxFirstFreeBlock = (
void * ) pucAlignedHeap;