Assign idle task to each core before SMP scheduler start (#945)
Co-authored-by: Rahul Kar <118818625+kar-rahul-aws@users.noreply.github.com>
diff --git a/tasks.c b/tasks.c
index 279d4bd..93e9c02 100644
--- a/tasks.c
+++ b/tasks.c
@@ -2108,29 +2108,9 @@
mtCOVERAGE_TEST_MARKER();
}
- if( ( pxNewTCB->uxTaskAttributes & taskATTRIBUTE_IS_IDLE ) != 0U )
- {
- BaseType_t xCoreID;
-
- /* Check if a core is free. */
- for( xCoreID = ( BaseType_t ) 0; xCoreID < ( BaseType_t ) configNUMBER_OF_CORES; xCoreID++ )
- {
- if( pxCurrentTCBs[ xCoreID ] == NULL )
- {
- pxNewTCB->xTaskRunState = xCoreID;
- pxCurrentTCBs[ xCoreID ] = pxNewTCB;
- break;
- }
- else
- {
- mtCOVERAGE_TEST_MARKER();
- }
- }
- }
- else
- {
- mtCOVERAGE_TEST_MARKER();
- }
+ /* All the cores start with idle tasks before the SMP scheduler
+ * is running. Idle tasks are assigned to cores when they are
+ * created in prvCreateIdleTasks(). */
}
uxTaskNumber++;
@@ -3645,7 +3625,17 @@
}
else
{
- mtCOVERAGE_TEST_MARKER();
+ #if ( configNUMBER_OF_CORES == 1 )
+ {
+ mtCOVERAGE_TEST_MARKER();
+ }
+ #else
+ {
+ /* Assign idle task to each core before SMP scheduler is running. */
+ xIdleTaskHandles[ xCoreID ]->xTaskRunState = xCoreID;
+ pxCurrentTCBs[ xCoreID ] = xIdleTaskHandles[ xCoreID ];
+ }
+ #endif
}
}