Skip to content

Commit 979827a

Browse files
committed
Fix eTaskGetState for pending ready tasks
This commit fixes eTaskGetState so that eReady is returned for pending ready tasks.
1 parent d2a8153 commit 979827a

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

tasks.c

+11-2
Original file line numberDiff line numberDiff line change
@@ -1361,7 +1361,7 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
13611361
eTaskState eTaskGetState( TaskHandle_t xTask )
13621362
{
13631363
eTaskState eReturn;
1364-
List_t const * pxStateList, * pxDelayedList, * pxOverflowedDelayedList;
1364+
List_t const * pxStateList, * pxEventList , * pxDelayedList, * pxOverflowedDelayedList;
13651365
const TCB_t * const pxTCB = xTask;
13661366

13671367
configASSERT( pxTCB );
@@ -1376,12 +1376,21 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
13761376
taskENTER_CRITICAL();
13771377
{
13781378
pxStateList = listLIST_ITEM_CONTAINER( &( pxTCB->xStateListItem ) );
1379+
pxEventList = listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) );
13791380
pxDelayedList = pxDelayedTaskList;
13801381
pxOverflowedDelayedList = pxOverflowDelayedTaskList;
13811382
}
13821383
taskEXIT_CRITICAL();
13831384

1384-
if( ( pxStateList == pxDelayedList ) || ( pxStateList == pxOverflowedDelayedList ) )
1385+
if( pxEventList == &xPendingReadyList )
1386+
{
1387+
/* The task has been placed on the pending ready list, so its
1388+
* state is eReady regardless of what list the task's state list
1389+
* item is currently placed on. */
1390+
eReturn = eReady;
1391+
}
1392+
1393+
else if( ( pxStateList == pxDelayedList ) || ( pxStateList == pxOverflowedDelayedList ) )
13851394
{
13861395
/* The task being queried is referenced from one of the Blocked
13871396
* lists. */

0 commit comments

Comments
 (0)