Skip to content

Commit

Permalink
Assign idle task to each core before scheduler start
Browse files Browse the repository at this point in the history
  • Loading branch information
chinglee-iot committed Jan 5, 2024
1 parent 4568507 commit 6a7881c
Showing 1 changed file with 14 additions and 24 deletions.
38 changes: 14 additions & 24 deletions tasks.c
Original file line number Diff line number Diff line change
Expand Up @@ -2108,29 +2108,9 @@ static void prvInitialiseNewTask( TaskFunction_t pxTaskCode,
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. An idle task is assigned to each core when it is
* created in prvCreateIdleTasks(). */
}

uxTaskNumber++;
Expand Down Expand Up @@ -3645,7 +3625,17 @@ static BaseType_t prvCreateIdleTasks( void )
}
else
{
mtCOVERAGE_TEST_MARKER();
#if ( configNUMBER_OF_CORES == 1 )
{
mtCOVERAGE_TEST_MARKER();
}
#else
{
/* Assign idle task to each core before SMP scheduler starts. */
xIdleTaskHandles[ xCoreID ]->xTaskRunState = xCoreID;
pxCurrentTCBs[ xCoreID ] = xIdleTaskHandles[ xCoreID ];
}
#endif
}
}

Expand Down

0 comments on commit 6a7881c

Please sign in to comment.