mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
Fix eTaskGetState for pending ready tasks (#679)
This commit fixes eTaskGetState so that eReady is returned for pending ready tasks. Co-authored-by: Darian Leung <darian@espressif.com>
This commit is contained in:
parent
97434a4e0c
commit
953c1ee6cb
11
tasks.c
11
tasks.c
|
@ -1351,6 +1351,7 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||
{
|
||||
eTaskState eReturn;
|
||||
List_t const * pxStateList;
|
||||
List_t const * pxEventList;
|
||||
List_t const * pxDelayedList;
|
||||
List_t const * pxOverflowedDelayedList;
|
||||
const TCB_t * const pxTCB = xTask;
|
||||
|
@ -1367,12 +1368,20 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||
taskENTER_CRITICAL();
|
||||
{
|
||||
pxStateList = listLIST_ITEM_CONTAINER( &( pxTCB->xStateListItem ) );
|
||||
pxEventList = listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) );
|
||||
pxDelayedList = pxDelayedTaskList;
|
||||
pxOverflowedDelayedList = pxOverflowDelayedTaskList;
|
||||
}
|
||||
taskEXIT_CRITICAL();
|
||||
|
||||
if( ( pxStateList == pxDelayedList ) || ( pxStateList == pxOverflowedDelayedList ) )
|
||||
if( pxEventList == &xPendingReadyList )
|
||||
{
|
||||
/* The task has been placed on the pending ready list, so its
|
||||
* state is eReady regardless of what list the task's state list
|
||||
* item is currently placed on. */
|
||||
eReturn = eReady;
|
||||
}
|
||||
else if( ( pxStateList == pxDelayedList ) || ( pxStateList == pxOverflowedDelayedList ) )
|
||||
{
|
||||
/* The task being queried is referenced from one of the Blocked
|
||||
* lists. */
|
||||
|
|
Loading…
Reference in a new issue