mirror of
				https://github.com/FreeRTOS/FreeRTOS-Kernel.git
				synced 2025-11-04 02:59:01 +01:00 
			
		
		
		
	[Fix] Type for pointers operations (#550)
* fix type for pointers operations in some places: size_t -> portPOINTER_SIZE_TYPE * fix pointer arithmetics * fix xAddress type
This commit is contained in:
		
							parent
							
								
									ac69aa858a
								
							
						
					
					
						commit
						dc8f8be53e
					
				@ -353,7 +353,7 @@ static void prvHeapInit( void ) /* PRIVILEGED_FUNCTION */
 | 
			
		||||
 | 
			
		||||
    /* To start with there is a single free block that is sized to take up the
 | 
			
		||||
     * entire heap space. */
 | 
			
		||||
    pxFirstFreeBlock = ( void * ) pucAlignedHeap;
 | 
			
		||||
    pxFirstFreeBlock = ( BlockLink_t * ) pucAlignedHeap;
 | 
			
		||||
    pxFirstFreeBlock->xBlockSize = configADJUSTED_HEAP_SIZE;
 | 
			
		||||
    pxFirstFreeBlock->pxNextFreeBlock = &xEnd;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -377,17 +377,17 @@ static void prvHeapInit( void ) /* PRIVILEGED_FUNCTION */
 | 
			
		||||
{
 | 
			
		||||
    BlockLink_t * pxFirstFreeBlock;
 | 
			
		||||
    uint8_t * pucAlignedHeap;
 | 
			
		||||
    size_t uxAddress;
 | 
			
		||||
    portPOINTER_SIZE_TYPE uxAddress;
 | 
			
		||||
    size_t xTotalHeapSize = configTOTAL_HEAP_SIZE;
 | 
			
		||||
 | 
			
		||||
    /* Ensure the heap starts on a correctly aligned boundary. */
 | 
			
		||||
    uxAddress = ( size_t ) ucHeap;
 | 
			
		||||
    uxAddress = ( portPOINTER_SIZE_TYPE ) ucHeap;
 | 
			
		||||
 | 
			
		||||
    if( ( uxAddress & portBYTE_ALIGNMENT_MASK ) != 0 )
 | 
			
		||||
    {
 | 
			
		||||
        uxAddress += ( portBYTE_ALIGNMENT - 1 );
 | 
			
		||||
        uxAddress &= ~( ( size_t ) portBYTE_ALIGNMENT_MASK );
 | 
			
		||||
        xTotalHeapSize -= uxAddress - ( size_t ) ucHeap;
 | 
			
		||||
        uxAddress &= ~( ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK );
 | 
			
		||||
        xTotalHeapSize -= uxAddress - ( portPOINTER_SIZE_TYPE ) ucHeap;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pucAlignedHeap = ( uint8_t * ) uxAddress;
 | 
			
		||||
@ -399,17 +399,17 @@ static void prvHeapInit( void ) /* PRIVILEGED_FUNCTION */
 | 
			
		||||
 | 
			
		||||
    /* pxEnd is used to mark the end of the list of free blocks and is inserted
 | 
			
		||||
     * at the end of the heap space. */
 | 
			
		||||
    uxAddress = ( ( size_t ) pucAlignedHeap ) + xTotalHeapSize;
 | 
			
		||||
    uxAddress = ( ( portPOINTER_SIZE_TYPE ) pucAlignedHeap ) + xTotalHeapSize;
 | 
			
		||||
    uxAddress -= xHeapStructSize;
 | 
			
		||||
    uxAddress &= ~( ( size_t ) portBYTE_ALIGNMENT_MASK );
 | 
			
		||||
    pxEnd = ( void * ) uxAddress;
 | 
			
		||||
    uxAddress &= ~( ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK );
 | 
			
		||||
    pxEnd = ( BlockLink_t * ) uxAddress;
 | 
			
		||||
    pxEnd->xBlockSize = 0;
 | 
			
		||||
    pxEnd->pxNextFreeBlock = NULL;
 | 
			
		||||
 | 
			
		||||
    /* To start with there is a single free block that is sized to take up the
 | 
			
		||||
     * entire heap space, minus the space taken by pxEnd. */
 | 
			
		||||
    pxFirstFreeBlock = ( void * ) pucAlignedHeap;
 | 
			
		||||
    pxFirstFreeBlock->xBlockSize = uxAddress - ( size_t ) pxFirstFreeBlock;
 | 
			
		||||
    pxFirstFreeBlock = ( BlockLink_t * ) pucAlignedHeap;
 | 
			
		||||
    pxFirstFreeBlock->xBlockSize = ( size_t ) ( uxAddress - ( portPOINTER_SIZE_TYPE ) pxFirstFreeBlock );
 | 
			
		||||
    pxFirstFreeBlock->pxNextFreeBlock = pxEnd;
 | 
			
		||||
 | 
			
		||||
    /* Only one block exists - and it covers the entire usable heap space. */
 | 
			
		||||
 | 
			
		||||
@ -442,10 +442,10 @@ static void prvInsertBlockIntoFreeList( BlockLink_t * pxBlockToInsert )
 | 
			
		||||
void vPortDefineHeapRegions( const HeapRegion_t * const pxHeapRegions )
 | 
			
		||||
{
 | 
			
		||||
    BlockLink_t * pxFirstFreeBlockInRegion = NULL, * pxPreviousFreeBlock;
 | 
			
		||||
    size_t xAlignedHeap;
 | 
			
		||||
    portPOINTER_SIZE_TYPE xAlignedHeap;
 | 
			
		||||
    size_t xTotalRegionSize, xTotalHeapSize = 0;
 | 
			
		||||
    BaseType_t xDefinedRegions = 0;
 | 
			
		||||
    size_t xAddress;
 | 
			
		||||
    portPOINTER_SIZE_TYPE xAddress;
 | 
			
		||||
    const HeapRegion_t * pxHeapRegion;
 | 
			
		||||
 | 
			
		||||
    /* Can only call once! */
 | 
			
		||||
@ -458,7 +458,7 @@ void vPortDefineHeapRegions( const HeapRegion_t * const pxHeapRegions )
 | 
			
		||||
        xTotalRegionSize = pxHeapRegion->xSizeInBytes;
 | 
			
		||||
 | 
			
		||||
        /* Ensure the heap region starts on a correctly aligned boundary. */
 | 
			
		||||
        xAddress = ( size_t ) pxHeapRegion->pucStartAddress;
 | 
			
		||||
        xAddress = ( portPOINTER_SIZE_TYPE ) pxHeapRegion->pucStartAddress;
 | 
			
		||||
 | 
			
		||||
        if( ( xAddress & portBYTE_ALIGNMENT_MASK ) != 0 )
 | 
			
		||||
        {
 | 
			
		||||
@ -466,7 +466,7 @@ void vPortDefineHeapRegions( const HeapRegion_t * const pxHeapRegions )
 | 
			
		||||
            xAddress &= ~portBYTE_ALIGNMENT_MASK;
 | 
			
		||||
 | 
			
		||||
            /* Adjust the size for the bytes lost to alignment. */
 | 
			
		||||
            xTotalRegionSize -= xAddress - ( size_t ) pxHeapRegion->pucStartAddress;
 | 
			
		||||
            xTotalRegionSize -= ( size_t ) ( xAddress - ( portPOINTER_SIZE_TYPE ) pxHeapRegion->pucStartAddress );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        xAlignedHeap = xAddress;
 | 
			
		||||
@ -506,7 +506,7 @@ void vPortDefineHeapRegions( const HeapRegion_t * const pxHeapRegions )
 | 
			
		||||
         * sized to take up the entire heap region minus the space taken by the
 | 
			
		||||
         * free block structure. */
 | 
			
		||||
        pxFirstFreeBlockInRegion = ( BlockLink_t * ) xAlignedHeap;
 | 
			
		||||
        pxFirstFreeBlockInRegion->xBlockSize = xAddress - ( size_t ) pxFirstFreeBlockInRegion;
 | 
			
		||||
        pxFirstFreeBlockInRegion->xBlockSize = ( size_t ) ( xAddress - ( portPOINTER_SIZE_TYPE ) pxFirstFreeBlockInRegion );
 | 
			
		||||
        pxFirstFreeBlockInRegion->pxNextFreeBlock = pxEnd;
 | 
			
		||||
 | 
			
		||||
        /* If this is not the first region that makes up the entire heap space
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user