mirror of
				https://github.com/FreeRTOS/FreeRTOS-Kernel.git
				synced 2025-11-04 02:59:01 +01:00 
			
		
		
		
	Improvement for 64bit Windows port (#1011)
* 64bit TickType_t is supported on Windows port.(MSVC and MinGW) Especially it is introduced for 64bit compiler.(x64 platform on MSVC and MinGW-w64) * Unnecessary compiler warning for the cast operation is disabled locally.(MinGW-w64 only) * Modify the condition for ignoring compiler warning for the cast operation. Before modification: Compiler warning was ignored only on MinGW64 After modification: Compiler warning is ignored on MinGW32 and MinGW64 Reason of modification: The cast warning here is unavoidable not only on MinGW64 but also on MinGW32. "__GNUC__" macro is used because MSVC does not recognize this #pragma directive.
This commit is contained in:
		
							parent
							
								
									4732b96dba
								
							
						
					
					
						commit
						6dcce92490
					
				@ -246,8 +246,19 @@ StackType_t * pxPortInitialiseStack( StackType_t * pxTopOfStack,
 | 
			
		||||
                                               FALSE,  /* Start not signalled. */
 | 
			
		||||
                                               NULL ); /* No name. */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef __GNUC__
 | 
			
		||||
    /* GCC reports the warning for the cast operation from TaskFunction_t to LPTHREAD_START_ROUTINE. */
 | 
			
		||||
    /* Disable this warning here by the #pragma option. */
 | 
			
		||||
#pragma GCC diagnostic push
 | 
			
		||||
#pragma GCC diagnostic ignored "-Wcast-function-type"
 | 
			
		||||
#endif
 | 
			
		||||
    /* Create the thread itself. */
 | 
			
		||||
    pxThreadState->pvThread = CreateThread( NULL, xStackSize, ( LPTHREAD_START_ROUTINE ) pxCode, pvParameters, CREATE_SUSPENDED | STACK_SIZE_PARAM_IS_A_RESERVATION, NULL );
 | 
			
		||||
#ifdef __GNUC__
 | 
			
		||||
#pragma GCC diagnostic pop
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    configASSERT( pxThreadState->pvThread ); /* See comment where TerminateThread() is called. */
 | 
			
		||||
    SetThreadAffinityMask( pxThreadState->pvThread, 0x01 );
 | 
			
		||||
    SetThreadPriorityBoost( pxThreadState->pvThread, TRUE );
 | 
			
		||||
 | 
			
		||||
@ -72,9 +72,18 @@ typedef portSTACK_TYPE           StackType_t;
 | 
			
		||||
    typedef uint32_t             TickType_t;
 | 
			
		||||
    #define portMAX_DELAY              ( TickType_t ) 0xffffffffUL
 | 
			
		||||
 | 
			
		||||
/* 32/64-bit tick type on a 32/64-bit architecture, so reads of the tick
 | 
			
		||||
/* 32-bit tick type on a 32/64-bit architecture, so reads of the tick
 | 
			
		||||
 * count do not need to be guarded with a critical section. */
 | 
			
		||||
    #define portTICK_TYPE_IS_ATOMIC    1
 | 
			
		||||
#elif ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_64_BITS )
 | 
			
		||||
    typedef uint64_t             TickType_t;
 | 
			
		||||
    #define portMAX_DELAY              ( TickType_t ) 0xffffffffffffffffULL
 | 
			
		||||
 | 
			
		||||
#if defined( __x86_64__ ) || defined( _M_X64 )
 | 
			
		||||
/* 64-bit tick type on a 64-bit architecture, so reads of the tick
 | 
			
		||||
 * count do not need to be guarded with a critical section. */
 | 
			
		||||
    #define portTICK_TYPE_IS_ATOMIC    1
 | 
			
		||||
#endif
 | 
			
		||||
#else
 | 
			
		||||
    #error configTICK_TYPE_WIDTH_IN_BITS set to unsupported tick type width.
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user