Modify vTaskGetRunTimeStats() to ensure the current run time total is obtained from within a critical section. This allows greater flexibility in how the run time counter value is maintained.

This commit is contained in:
Richard Barry 2010-12-23 10:40:13 +00:00
parent a67c624894
commit 7fd1d847fb

View File

@ -1282,8 +1282,17 @@ unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void )
void vTaskGetRunTimeStats( signed char *pcWriteBuffer )
{
unsigned portBASE_TYPE uxQueue;
unsigned long ulTotalRunTime = portGET_RUN_TIME_COUNTER_VALUE();
unsigned long ulTotalRunTime;
/* A critical section is used because portGET_RUN_TIME_COUNTER_VALUE()
is implemented differently on different ports, so its not known if a
critical section is needed or not. */
taskENTER_CRITICAL();
{
ulTotalRunTime = portGET_RUN_TIME_COUNTER_VALUE();
}
taskEXIT_CRITICAL();
/* This is a VERY costly function that should be used for debug only.
It leaves interrupts disabled for a LONG time. */