@@ -239,6 +239,19 @@ count overflows. */
239
239
tracePOST_MOVED_TASK_TO_READY_STATE( pxTCB )
240
240
/*-----------------------------------------------------------*/
241
241
242
+ /*
243
+ * Place the task represented by pxTCB which has been in a ready list before
244
+ * into the appropriate ready list for the task.
245
+ * It is inserted at the end of the list.
246
+ */
247
+ #define prvReaddTaskToReadyList ( pxTCB ) \
248
+ traceREADDED_TASK_TO_READY_STATE( pxTCB ); \
249
+ taskRECORD_READY_PRIORITY( ( pxTCB )->uxPriority ); \
250
+ vListInsertEnd( &( pxReadyTasksLists[ ( pxTCB )->uxPriority ] ), &( ( pxTCB )->xStateListItem ) ); \
251
+ tracePOST_MOVED_TASK_TO_READY_STATE( pxTCB )
252
+ /*-----------------------------------------------------------*/
253
+
254
+
242
255
/*
243
256
* Several functions take an TaskHandle_t parameter that can optionally be NULL,
244
257
* where NULL is used to indicate that the handle of the currently executing
@@ -1598,7 +1611,7 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB )
1598
1611
{
1599
1612
mtCOVERAGE_TEST_MARKER ();
1600
1613
}
1601
- prvAddTaskToReadyList ( pxTCB );
1614
+ prvReaddTaskToReadyList ( pxTCB );
1602
1615
}
1603
1616
else
1604
1617
{
@@ -1660,6 +1673,7 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB )
1660
1673
mtCOVERAGE_TEST_MARKER ();
1661
1674
}
1662
1675
1676
+ traceMOVED_TASK_TO_SUSPENDED_LIST (pxTCB );
1663
1677
vListInsertEnd ( & xSuspendedTaskList , & ( pxTCB -> xStateListItem ) );
1664
1678
1665
1679
#if ( configUSE_TASK_NOTIFICATIONS == 1 )
@@ -3671,6 +3685,20 @@ static void prvCheckTasksWaitingTermination( void )
3671
3685
#endif /* INCLUDE_uxTaskGetStackHighWaterMark */
3672
3686
/*-----------------------------------------------------------*/
3673
3687
3688
+ #if (INCLUDE_pxTaskGetStackStart == 1 )
3689
+ uint8_t * pxTaskGetStackStart ( TaskHandle_t xTask )
3690
+ {
3691
+ TCB_t * pxTCB ;
3692
+ UBaseType_t uxReturn ;
3693
+ (void )uxReturn ;
3694
+
3695
+ pxTCB = prvGetTCBFromHandle ( xTask );
3696
+ return ( uint8_t * ) pxTCB -> pxStack ;
3697
+ }
3698
+ #endif /* INCLUDE_pxTaskGetStackStart */
3699
+ /*-----------------------------------------------------------*/
3700
+
3701
+
3674
3702
#if ( INCLUDE_vTaskDelete == 1 )
3675
3703
3676
3704
static void prvDeleteTCB ( TCB_t * pxTCB )
@@ -3840,7 +3868,7 @@ TCB_t *pxTCB;
3840
3868
3841
3869
/* Inherit the priority before being moved into the new list. */
3842
3870
pxMutexHolderTCB -> uxPriority = pxCurrentTCB -> uxPriority ;
3843
- prvAddTaskToReadyList ( pxMutexHolderTCB );
3871
+ prvReaddTaskToReadyList ( pxMutexHolderTCB );
3844
3872
}
3845
3873
else
3846
3874
{
@@ -3930,7 +3958,7 @@ TCB_t *pxTCB;
3930
3958
any other purpose if this task is running, and it must be
3931
3959
running to give back the mutex. */
3932
3960
listSET_LIST_ITEM_VALUE ( & ( pxTCB -> xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxTCB -> uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */
3933
- prvAddTaskToReadyList ( pxTCB );
3961
+ prvReaddTaskToReadyList ( pxTCB );
3934
3962
3935
3963
/* Return true to indicate that a context switch is required.
3936
3964
This is only actually required in the corner case whereby
@@ -4943,6 +4971,7 @@ const TickType_t xConstTickCount = xTickCount;
4943
4971
/* Add the task to the suspended task list instead of a delayed task
4944
4972
list to ensure it is not woken by a timing event. It will block
4945
4973
indefinitely. */
4974
+ traceMOVED_TASK_TO_SUSPENDED_LIST (pxCurrentTCB );
4946
4975
vListInsertEnd ( & xSuspendedTaskList , & ( pxCurrentTCB -> xStateListItem ) );
4947
4976
}
4948
4977
else
@@ -4959,12 +4988,14 @@ const TickType_t xConstTickCount = xTickCount;
4959
4988
{
4960
4989
/* Wake time has overflowed. Place this item in the overflow
4961
4990
list. */
4991
+ traceMOVED_TASK_TO_OVERFLOW_DELAYED_LIST ();
4962
4992
vListInsert ( pxOverflowDelayedTaskList , & ( pxCurrentTCB -> xStateListItem ) );
4963
4993
}
4964
4994
else
4965
4995
{
4966
4996
/* The wake time has not overflowed, so the current block list
4967
4997
is used. */
4998
+ traceMOVED_TASK_TO_DELAYED_LIST ();
4968
4999
vListInsert ( pxDelayedTaskList , & ( pxCurrentTCB -> xStateListItem ) );
4969
5000
4970
5001
/* If the task entering the blocked state was placed at the
@@ -4994,11 +5025,13 @@ const TickType_t xConstTickCount = xTickCount;
4994
5025
if ( xTimeToWake < xConstTickCount )
4995
5026
{
4996
5027
/* Wake time has overflowed. Place this item in the overflow list. */
5028
+ traceMOVED_TASK_TO_OVERFLOW_DELAYED_LIST ();
4997
5029
vListInsert ( pxOverflowDelayedTaskList , & ( pxCurrentTCB -> xStateListItem ) );
4998
5030
}
4999
5031
else
5000
5032
{
5001
5033
/* The wake time has not overflowed, so the current block list is used. */
5034
+ traceMOVED_TASK_TO_DELAYED_LIST ();
5002
5035
vListInsert ( pxDelayedTaskList , & ( pxCurrentTCB -> xStateListItem ) );
5003
5036
5004
5037
/* If the task entering the blocked state was placed at the head of the
0 commit comments