Add affinity to IDLE tasks in SMP systems

This commit is contained in:
rus084 2026-05-12 12:41:36 +03:00 committed by Dmitrii Sidin
parent a8c9d35152
commit b90464f4c2
2 changed files with 9 additions and 0 deletions

View file

@ -377,6 +377,10 @@
#define configIDLE_SHOULD_YIELD 1
#endif
#ifndef configIDLE_AFFINITY
#define configIDLE_AFFINITY 0
#endif
#if configMAX_TASK_NAME_LEN < 1
#error configMAX_TASK_NAME_LEN must be set to a minimum of 1 in FreeRTOSConfig.h
#endif

View file

@ -3687,6 +3687,11 @@ static BaseType_t prvCreateIdleTasks( void )
/* Assign idle task to each core before SMP scheduler is running. */
xIdleTaskHandles[ xCoreID ]->xTaskRunState = xCoreID;
pxCurrentTCBs[ xCoreID ] = xIdleTaskHandles[ xCoreID ];
#if ( ( configIDLE_AFFINITY == 1 ) && ( configUSE_CORE_AFFINITY == 1 ) )
{
xIdleTaskHandles[ xCoreID ]->uxCoreAffinityMask = ( ( UBaseType_t ) 1U << ( UBaseType_t ) xCoreID );
}
#endif
}
#endif
}