mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
Merge branch 'FreeRTOS:main' into posixPortUpdate
This commit is contained in:
commit
93b1ae25f5
4
portable/ThirdParty/GCC/Posix/port.c
vendored
4
portable/ThirdParty/GCC/Posix/port.c
vendored
|
@ -384,6 +384,10 @@ static void prvPortYieldFromISR( void )
|
||||||
|
|
||||||
void vPortYield( void )
|
void vPortYield( void )
|
||||||
{
|
{
|
||||||
|
/* This must never be called from outside of a FreeRTOS-owned thread, or
|
||||||
|
* the thread could get stuck in a suspended state. */
|
||||||
|
configASSERT( prvIsFreeRTOSThread() == pdTRUE );
|
||||||
|
|
||||||
vPortEnterCritical();
|
vPortEnterCritical();
|
||||||
|
|
||||||
prvPortYieldFromISR();
|
prvPortYieldFromISR();
|
||||||
|
|
84
tasks.c
84
tasks.c
|
@ -6215,7 +6215,7 @@ static void prvCheckTasksWaitingTermination( void )
|
||||||
|
|
||||||
#if ( configGENERATE_RUN_TIME_STATS == 1 )
|
#if ( configGENERATE_RUN_TIME_STATS == 1 )
|
||||||
{
|
{
|
||||||
pxTaskStatus->ulRunTimeCounter = pxTCB->ulRunTimeCounter;
|
pxTaskStatus->ulRunTimeCounter = ulTaskGetRunTimeCounter( xTask );
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
{
|
{
|
||||||
|
@ -8415,15 +8415,37 @@ TickType_t uxTaskResetEventItemValue( void )
|
||||||
configRUN_TIME_COUNTER_TYPE ulTaskGetRunTimeCounter( const TaskHandle_t xTask )
|
configRUN_TIME_COUNTER_TYPE ulTaskGetRunTimeCounter( const TaskHandle_t xTask )
|
||||||
{
|
{
|
||||||
TCB_t * pxTCB;
|
TCB_t * pxTCB;
|
||||||
|
configRUN_TIME_COUNTER_TYPE ulTotalTime = 0, ulTimeSinceLastSwitchedIn = 0, ulTaskRunTime = 0;
|
||||||
|
|
||||||
traceENTER_ulTaskGetRunTimeCounter( xTask );
|
traceENTER_ulTaskGetRunTimeCounter( xTask );
|
||||||
|
|
||||||
pxTCB = prvGetTCBFromHandle( xTask );
|
pxTCB = prvGetTCBFromHandle( xTask );
|
||||||
configASSERT( pxTCB != NULL );
|
configASSERT( pxTCB != NULL );
|
||||||
|
|
||||||
traceRETURN_ulTaskGetRunTimeCounter( pxTCB->ulRunTimeCounter );
|
taskENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
if( taskTASK_IS_RUNNING( pxTCB ) == pdTRUE )
|
||||||
|
{
|
||||||
|
#ifdef portALT_GET_RUN_TIME_COUNTER_VALUE
|
||||||
|
portALT_GET_RUN_TIME_COUNTER_VALUE( ulTotalTime );
|
||||||
|
#else
|
||||||
|
ulTotalTime = portGET_RUN_TIME_COUNTER_VALUE();
|
||||||
|
#endif
|
||||||
|
|
||||||
return pxTCB->ulRunTimeCounter;
|
#if ( configNUMBER_OF_CORES == 1 )
|
||||||
|
ulTimeSinceLastSwitchedIn = ulTotalTime - ulTaskSwitchedInTime[ 0 ];
|
||||||
|
#else
|
||||||
|
ulTimeSinceLastSwitchedIn = ulTotalTime - ulTaskSwitchedInTime[ pxTCB->xTaskRunState ];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
ulTaskRunTime = pxTCB->ulRunTimeCounter + ulTimeSinceLastSwitchedIn;
|
||||||
|
}
|
||||||
|
taskEXIT_CRITICAL();
|
||||||
|
|
||||||
|
traceRETURN_ulTaskGetRunTimeCounter( ulTaskRunTime );
|
||||||
|
|
||||||
|
return ulTaskRunTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* if ( configGENERATE_RUN_TIME_STATS == 1 ) */
|
#endif /* if ( configGENERATE_RUN_TIME_STATS == 1 ) */
|
||||||
|
@ -8434,11 +8456,17 @@ TickType_t uxTaskResetEventItemValue( void )
|
||||||
configRUN_TIME_COUNTER_TYPE ulTaskGetRunTimePercent( const TaskHandle_t xTask )
|
configRUN_TIME_COUNTER_TYPE ulTaskGetRunTimePercent( const TaskHandle_t xTask )
|
||||||
{
|
{
|
||||||
TCB_t * pxTCB;
|
TCB_t * pxTCB;
|
||||||
configRUN_TIME_COUNTER_TYPE ulTotalTime, ulReturn;
|
configRUN_TIME_COUNTER_TYPE ulTotalTime, ulReturn, ulTaskRunTime;
|
||||||
|
|
||||||
traceENTER_ulTaskGetRunTimePercent( xTask );
|
traceENTER_ulTaskGetRunTimePercent( xTask );
|
||||||
|
|
||||||
|
ulTaskRunTime = ulTaskGetRunTimeCounter( xTask );
|
||||||
|
|
||||||
|
#ifdef portALT_GET_RUN_TIME_COUNTER_VALUE
|
||||||
|
portALT_GET_RUN_TIME_COUNTER_VALUE( ulTotalTime );
|
||||||
|
#else
|
||||||
ulTotalTime = ( configRUN_TIME_COUNTER_TYPE ) portGET_RUN_TIME_COUNTER_VALUE();
|
ulTotalTime = ( configRUN_TIME_COUNTER_TYPE ) portGET_RUN_TIME_COUNTER_VALUE();
|
||||||
|
#endif
|
||||||
|
|
||||||
/* For percentage calculations. */
|
/* For percentage calculations. */
|
||||||
ulTotalTime /= ( configRUN_TIME_COUNTER_TYPE ) 100;
|
ulTotalTime /= ( configRUN_TIME_COUNTER_TYPE ) 100;
|
||||||
|
@ -8449,7 +8477,7 @@ TickType_t uxTaskResetEventItemValue( void )
|
||||||
pxTCB = prvGetTCBFromHandle( xTask );
|
pxTCB = prvGetTCBFromHandle( xTask );
|
||||||
configASSERT( pxTCB != NULL );
|
configASSERT( pxTCB != NULL );
|
||||||
|
|
||||||
ulReturn = pxTCB->ulRunTimeCounter / ulTotalTime;
|
ulReturn = ulTaskRunTime / ulTotalTime;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -8468,19 +8496,42 @@ TickType_t uxTaskResetEventItemValue( void )
|
||||||
|
|
||||||
configRUN_TIME_COUNTER_TYPE ulTaskGetIdleRunTimeCounter( void )
|
configRUN_TIME_COUNTER_TYPE ulTaskGetIdleRunTimeCounter( void )
|
||||||
{
|
{
|
||||||
configRUN_TIME_COUNTER_TYPE ulReturn = 0;
|
configRUN_TIME_COUNTER_TYPE ulTotalTime = 0, ulTimeSinceLastSwitchedIn = 0, ulIdleTaskRunTime = 0;
|
||||||
BaseType_t i;
|
BaseType_t i;
|
||||||
|
|
||||||
traceENTER_ulTaskGetIdleRunTimeCounter();
|
traceENTER_ulTaskGetIdleRunTimeCounter();
|
||||||
|
|
||||||
|
taskENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
#ifdef portALT_GET_RUN_TIME_COUNTER_VALUE
|
||||||
|
portALT_GET_RUN_TIME_COUNTER_VALUE( ulTotalTime );
|
||||||
|
#else
|
||||||
|
ulTotalTime = portGET_RUN_TIME_COUNTER_VALUE();
|
||||||
|
#endif
|
||||||
|
|
||||||
for( i = 0; i < ( BaseType_t ) configNUMBER_OF_CORES; i++ )
|
for( i = 0; i < ( BaseType_t ) configNUMBER_OF_CORES; i++ )
|
||||||
{
|
{
|
||||||
ulReturn += xIdleTaskHandles[ i ]->ulRunTimeCounter;
|
if( taskTASK_IS_RUNNING( xIdleTaskHandles[ i ] ) == pdTRUE )
|
||||||
|
{
|
||||||
|
#if ( configNUMBER_OF_CORES == 1 )
|
||||||
|
ulTimeSinceLastSwitchedIn = ulTotalTime - ulTaskSwitchedInTime[ 0 ];
|
||||||
|
#else
|
||||||
|
ulTimeSinceLastSwitchedIn = ulTotalTime - ulTaskSwitchedInTime[ xIdleTaskHandles[ i ]->xTaskRunState ];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ulTimeSinceLastSwitchedIn = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
traceRETURN_ulTaskGetIdleRunTimeCounter( ulReturn );
|
ulIdleTaskRunTime += ( xIdleTaskHandles[ i ]->ulRunTimeCounter + ulTimeSinceLastSwitchedIn );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
taskEXIT_CRITICAL();
|
||||||
|
|
||||||
return ulReturn;
|
traceRETURN_ulTaskGetIdleRunTimeCounter( ulIdleTaskRunTime );
|
||||||
|
|
||||||
|
return ulIdleTaskRunTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */
|
#endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */
|
||||||
|
@ -8492,11 +8543,16 @@ TickType_t uxTaskResetEventItemValue( void )
|
||||||
{
|
{
|
||||||
configRUN_TIME_COUNTER_TYPE ulTotalTime, ulReturn;
|
configRUN_TIME_COUNTER_TYPE ulTotalTime, ulReturn;
|
||||||
configRUN_TIME_COUNTER_TYPE ulRunTimeCounter = 0;
|
configRUN_TIME_COUNTER_TYPE ulRunTimeCounter = 0;
|
||||||
BaseType_t i;
|
|
||||||
|
|
||||||
traceENTER_ulTaskGetIdleRunTimePercent();
|
traceENTER_ulTaskGetIdleRunTimePercent();
|
||||||
|
|
||||||
ulTotalTime = portGET_RUN_TIME_COUNTER_VALUE() * configNUMBER_OF_CORES;
|
#ifdef portALT_GET_RUN_TIME_COUNTER_VALUE
|
||||||
|
portALT_GET_RUN_TIME_COUNTER_VALUE( ulTotalTime );
|
||||||
|
#else
|
||||||
|
ulTotalTime = ( configRUN_TIME_COUNTER_TYPE ) portGET_RUN_TIME_COUNTER_VALUE();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ulTotalTime *= configNUMBER_OF_CORES;
|
||||||
|
|
||||||
/* For percentage calculations. */
|
/* For percentage calculations. */
|
||||||
ulTotalTime /= ( configRUN_TIME_COUNTER_TYPE ) 100;
|
ulTotalTime /= ( configRUN_TIME_COUNTER_TYPE ) 100;
|
||||||
|
@ -8504,11 +8560,7 @@ TickType_t uxTaskResetEventItemValue( void )
|
||||||
/* Avoid divide by zero errors. */
|
/* Avoid divide by zero errors. */
|
||||||
if( ulTotalTime > ( configRUN_TIME_COUNTER_TYPE ) 0 )
|
if( ulTotalTime > ( configRUN_TIME_COUNTER_TYPE ) 0 )
|
||||||
{
|
{
|
||||||
for( i = 0; i < ( BaseType_t ) configNUMBER_OF_CORES; i++ )
|
ulRunTimeCounter = ulTaskGetIdleRunTimeCounter();
|
||||||
{
|
|
||||||
ulRunTimeCounter += xIdleTaskHandles[ i ]->ulRunTimeCounter;
|
|
||||||
}
|
|
||||||
|
|
||||||
ulReturn = ulRunTimeCounter / ulTotalTime;
|
ulReturn = ulRunTimeCounter / ulTotalTime;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue