mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04: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…
Reference in a new issue