mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'feature/freertos_add_valid_core_id_macro_v5.2' into 'release/v5.2'
feat(freertos/idf): Add taskVALID_CORE_ID() macro (v5.2) See merge request espressif/esp-idf!27180
This commit is contained in:
commit
7bbe4eae46
@ -204,6 +204,15 @@ typedef enum
|
|||||||
#define tskNO_AFFINITY ( ( BaseType_t ) 0x7FFFFFFF )
|
#define tskNO_AFFINITY ( ( BaseType_t ) 0x7FFFFFFF )
|
||||||
/* Todo: Update tskNO_AFFINITY value to -1 (IDF-7908) */
|
/* Todo: Update tskNO_AFFINITY value to -1 (IDF-7908) */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Macro to check if an xCoreID value is valid
|
||||||
|
*
|
||||||
|
* @return pdTRUE if valid, pdFALSE otherwise.
|
||||||
|
*
|
||||||
|
* \ingroup Tasks
|
||||||
|
*/
|
||||||
|
#define taskVALID_CORE_ID( xCoreID ) ( ( ( ( ( BaseType_t ) xCoreID ) >= 0 && ( ( BaseType_t ) xCoreID ) < configNUMBER_OF_CORES ) || ( ( ( BaseType_t ) xCoreID ) == tskNO_AFFINITY ) ) ? pdTRUE : pdFALSE )
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Macro for forcing a context switch.
|
* Macro for forcing a context switch.
|
||||||
|
@ -52,9 +52,6 @@
|
|||||||
|
|
||||||
_Static_assert(portBYTE_ALIGNMENT == 16, "portBYTE_ALIGNMENT must be set to 16");
|
_Static_assert(portBYTE_ALIGNMENT == 16, "portBYTE_ALIGNMENT must be set to 16");
|
||||||
|
|
||||||
_Static_assert(tskNO_AFFINITY == CONFIG_FREERTOS_NO_AFFINITY, "incorrect tskNO_AFFINITY value");
|
|
||||||
|
|
||||||
|
|
||||||
/* ---------------------------------------------------- Variables ------------------------------------------------------
|
/* ---------------------------------------------------- Variables ------------------------------------------------------
|
||||||
* - Various variables used to maintain the FreeRTOS port's state. Used from both port.c and various .S files
|
* - Various variables used to maintain the FreeRTOS port's state. Used from both port.c and various .S files
|
||||||
* - Constant offsets are used by assembly to jump to particular TCB members or a stack area (such as the CPSA). We use
|
* - Constant offsets are used by assembly to jump to particular TCB members or a stack area (such as the CPSA). We use
|
||||||
|
@ -1037,7 +1037,7 @@ static void prvInitialiseNewTask( TaskFunction_t pxTaskCode,
|
|||||||
|
|
||||||
#if ( configNUMBER_OF_CORES > 1 )
|
#if ( configNUMBER_OF_CORES > 1 )
|
||||||
/* Check that xCoreID is valid */
|
/* Check that xCoreID is valid */
|
||||||
configASSERT( ( ( xCoreID >= 0 ) && ( xCoreID < configNUMBER_OF_CORES ) ) || ( xCoreID == tskNO_AFFINITY ) );
|
configASSERT( taskVALID_CORE_ID( xCoreID ) == pdTRUE );
|
||||||
#else
|
#else
|
||||||
/* Hard code xCoreID to 0 */
|
/* Hard code xCoreID to 0 */
|
||||||
xCoreID = 0;
|
xCoreID = 0;
|
||||||
@ -2288,9 +2288,9 @@ static BaseType_t prvCreateIdleTasks( void )
|
|||||||
BaseType_t xReturn = pdPASS;
|
BaseType_t xReturn = pdPASS;
|
||||||
BaseType_t xCoreID;
|
BaseType_t xCoreID;
|
||||||
|
|
||||||
#if ( configNUMBER_OF_CORES > 1 )
|
#if ( configNUMBER_OF_CORES > 1 )
|
||||||
char cIdleName[ configMAX_TASK_NAME_LEN ];
|
char cIdleName[ configMAX_TASK_NAME_LEN ];
|
||||||
#endif /* #if ( configNUMBER_OF_CORES > 1 ) */
|
#endif /* #if ( configNUMBER_OF_CORES > 1 ) */
|
||||||
|
|
||||||
/* Add each idle task at the lowest priority. */
|
/* Add each idle task at the lowest priority. */
|
||||||
for( xCoreID = ( BaseType_t ) 0; xCoreID < ( BaseType_t ) configNUMBER_OF_CORES; xCoreID++ )
|
for( xCoreID = ( BaseType_t ) 0; xCoreID < ( BaseType_t ) configNUMBER_OF_CORES; xCoreID++ )
|
||||||
@ -2396,7 +2396,6 @@ static BaseType_t prvCreateIdleTasks( void )
|
|||||||
portPRIVILEGE_BIT, /* In effect ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), but tskIDLE_PRIORITY is zero. */
|
portPRIVILEGE_BIT, /* In effect ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), but tskIDLE_PRIORITY is zero. */
|
||||||
&xIdleTaskHandle[ xCoreID ], /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */
|
&xIdleTaskHandle[ xCoreID ], /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */
|
||||||
xCoreID );
|
xCoreID );
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||||
}
|
}
|
||||||
|
@ -29,9 +29,7 @@
|
|||||||
*/
|
*/
|
||||||
_Static_assert( offsetof( StaticTask_t, pxDummy6 ) == offsetof( TCB_t, pxStack ) );
|
_Static_assert( offsetof( StaticTask_t, pxDummy6 ) == offsetof( TCB_t, pxStack ) );
|
||||||
_Static_assert( offsetof( StaticTask_t, pxDummy8 ) == offsetof( TCB_t, pxEndOfStack ) );
|
_Static_assert( offsetof( StaticTask_t, pxDummy8 ) == offsetof( TCB_t, pxEndOfStack ) );
|
||||||
#if CONFIG_FREERTOS_SMP
|
_Static_assert( tskNO_AFFINITY == ( BaseType_t ) CONFIG_FREERTOS_NO_AFFINITY, "CONFIG_FREERTOS_NO_AFFINITY must be the same as tskNO_AFFINITY" );
|
||||||
_Static_assert( tskNO_AFFINITY == CONFIG_FREERTOS_NO_AFFINITY, "CONFIG_FREERTOS_NO_AFFINITY must be the same as tskNO_AFFINITY" );
|
|
||||||
#endif /* CONFIG_FREERTOS_SMP */
|
|
||||||
|
|
||||||
/* ------------------------------------------------- Kernel Control ------------------------------------------------- */
|
/* ------------------------------------------------- Kernel Control ------------------------------------------------- */
|
||||||
|
|
||||||
@ -343,7 +341,7 @@ _Static_assert( offsetof( StaticTask_t, pxDummy8 ) == offsetof( TCB_t, pxEndOfSt
|
|||||||
|
|
||||||
configASSERT( portVALID_STACK_MEM( puxStackBuffer ) );
|
configASSERT( portVALID_STACK_MEM( puxStackBuffer ) );
|
||||||
configASSERT( portVALID_TCB_MEM( pxTaskBuffer ) );
|
configASSERT( portVALID_TCB_MEM( pxTaskBuffer ) );
|
||||||
configASSERT( ( ( xCoreID >= 0 ) && ( xCoreID < configNUM_CORES ) ) || ( xCoreID == tskNO_AFFINITY ) );
|
configASSERT( taskVALID_CORE_ID( xCoreID ) == pdTRUE );
|
||||||
|
|
||||||
#if ( configASSERT_DEFINED == 1 )
|
#if ( configASSERT_DEFINED == 1 )
|
||||||
{
|
{
|
||||||
@ -480,8 +478,7 @@ BaseType_t xTaskGetCoreID( TaskHandle_t xTask )
|
|||||||
}
|
}
|
||||||
#else /* CONFIG_FREERTOS_SMP */
|
#else /* CONFIG_FREERTOS_SMP */
|
||||||
{
|
{
|
||||||
configASSERT( xCoreID < configNUMBER_OF_CORES );
|
configASSERT( taskVALID_CORE_ID( xCoreID ) == pdTRUE );
|
||||||
configASSERT( xCoreID != tskNO_AFFINITY );
|
|
||||||
|
|
||||||
/* A critical section is not required as this function does not
|
/* A critical section is not required as this function does not
|
||||||
* guarantee that the TCB will still be valid when this function
|
* guarantee that the TCB will still be valid when this function
|
||||||
@ -502,8 +499,7 @@ BaseType_t xTaskGetCoreID( TaskHandle_t xTask )
|
|||||||
{
|
{
|
||||||
uint32_t ulRunTimeCounter;
|
uint32_t ulRunTimeCounter;
|
||||||
|
|
||||||
configASSERT( xCoreID < configNUMBER_OF_CORES );
|
configASSERT( taskVALID_CORE_ID( xCoreID ) == pdTRUE );
|
||||||
configASSERT( xCoreID != tskNO_AFFINITY );
|
|
||||||
|
|
||||||
/* For SMP, we need to take the kernel lock here as we are about to
|
/* For SMP, we need to take the kernel lock here as we are about to
|
||||||
* access kernel data structures. */
|
* access kernel data structures. */
|
||||||
@ -526,8 +522,7 @@ BaseType_t xTaskGetCoreID( TaskHandle_t xTask )
|
|||||||
{
|
{
|
||||||
configRUN_TIME_COUNTER_TYPE ulTotalTime, ulReturn;
|
configRUN_TIME_COUNTER_TYPE ulTotalTime, ulReturn;
|
||||||
|
|
||||||
configASSERT( xCoreID < configNUMBER_OF_CORES );
|
configASSERT( taskVALID_CORE_ID( xCoreID ) == pdTRUE );
|
||||||
configASSERT( xCoreID != tskNO_AFFINITY );
|
|
||||||
|
|
||||||
ulTotalTime = portGET_RUN_TIME_COUNTER_VALUE();
|
ulTotalTime = portGET_RUN_TIME_COUNTER_VALUE();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user