From 17f3c4d4e003032451bf102d500433820dd13441 Mon Sep 17 00:00:00 2001 From: James Cotton Date: Tue, 9 Oct 2012 09:57:57 -0500 Subject: [PATCH] Re-add our code for accessing the run time information in freertos. --- .../Libraries/FreeRTOS/Source/include/task.h | 13 +++++++++++++ .../Common/Libraries/FreeRTOS/Source/tasks.c | 16 ++++++++++++++++ .../Libraries/FreeRTOS/Source/include/task.h | 13 +++++++++++++ .../STM32F10x/Libraries/FreeRTOS/Source/tasks.c | 16 ++++++++++++++++ 4 files changed, 58 insertions(+) diff --git a/flight/PiOS/Common/Libraries/FreeRTOS/Source/include/task.h b/flight/PiOS/Common/Libraries/FreeRTOS/Source/include/task.h index e7a989d40..aa1733b86 100755 --- a/flight/PiOS/Common/Libraries/FreeRTOS/Source/include/task.h +++ b/flight/PiOS/Common/Libraries/FreeRTOS/Source/include/task.h @@ -1105,6 +1105,19 @@ void vTaskGetRunTimeStats( signed char *pcWriteBuffer ) PRIVILEGED_FUNCTION; */ unsigned portBASE_TYPE uxTaskGetStackHighWaterMark( xTaskHandle xTask ) PRIVILEGED_FUNCTION; +/** + * task.h + *
unsigned portBASE_TYPE uxTaskGetRunTime( xTaskHandle xTask );
+ * + * Returns the run time of selected task + * + * @param xTask Handle of the task associated with the stack to be checked. + * Set xTask to NULL to check the stack of the calling task. + * + * @return The run time of selected task + */ +unsigned portBASE_TYPE uxTaskGetRunTime( xTaskHandle xTask ); + /* When using trace macros it is sometimes necessary to include tasks.h before FreeRTOS.h. When this is done pdTASK_HOOK_CODE will not yet have been defined, so the following two prototypes will cause a compilation error. This can be diff --git a/flight/PiOS/Common/Libraries/FreeRTOS/Source/tasks.c b/flight/PiOS/Common/Libraries/FreeRTOS/Source/tasks.c index 0c43e63d6..8bc546e0d 100755 --- a/flight/PiOS/Common/Libraries/FreeRTOS/Source/tasks.c +++ b/flight/PiOS/Common/Libraries/FreeRTOS/Source/tasks.c @@ -2282,6 +2282,22 @@ tskTCB *pxNewTCB; #endif /*-----------------------------------------------------------*/ +#if ( INCLUDE_uxTaskGetRunTime == 1 ) + + unsigned portBASE_TYPE uxTaskGetRunTime( xTaskHandle xTask ) + { + unsigned long runTime; + + tskTCB *pxTCB; + pxTCB = prvGetTCBFromHandle( xTask ); + runTime = pxTCB->ulRunTimeCounter; + pxTCB->ulRunTimeCounter = 0; + return runTime; + } + +#endif +/*-----------------------------------------------------------*/ + #if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) unsigned portBASE_TYPE uxTaskGetStackHighWaterMark( xTaskHandle xTask ) diff --git a/flight/PiOS/STM32F10x/Libraries/FreeRTOS/Source/include/task.h b/flight/PiOS/STM32F10x/Libraries/FreeRTOS/Source/include/task.h index e7a989d40..aa1733b86 100755 --- a/flight/PiOS/STM32F10x/Libraries/FreeRTOS/Source/include/task.h +++ b/flight/PiOS/STM32F10x/Libraries/FreeRTOS/Source/include/task.h @@ -1105,6 +1105,19 @@ void vTaskGetRunTimeStats( signed char *pcWriteBuffer ) PRIVILEGED_FUNCTION; */ unsigned portBASE_TYPE uxTaskGetStackHighWaterMark( xTaskHandle xTask ) PRIVILEGED_FUNCTION; +/** + * task.h + *
unsigned portBASE_TYPE uxTaskGetRunTime( xTaskHandle xTask );
+ * + * Returns the run time of selected task + * + * @param xTask Handle of the task associated with the stack to be checked. + * Set xTask to NULL to check the stack of the calling task. + * + * @return The run time of selected task + */ +unsigned portBASE_TYPE uxTaskGetRunTime( xTaskHandle xTask ); + /* When using trace macros it is sometimes necessary to include tasks.h before FreeRTOS.h. When this is done pdTASK_HOOK_CODE will not yet have been defined, so the following two prototypes will cause a compilation error. This can be diff --git a/flight/PiOS/STM32F10x/Libraries/FreeRTOS/Source/tasks.c b/flight/PiOS/STM32F10x/Libraries/FreeRTOS/Source/tasks.c index 0c43e63d6..344208155 100755 --- a/flight/PiOS/STM32F10x/Libraries/FreeRTOS/Source/tasks.c +++ b/flight/PiOS/STM32F10x/Libraries/FreeRTOS/Source/tasks.c @@ -2262,6 +2262,22 @@ tskTCB *pxNewTCB; #endif /*-----------------------------------------------------------*/ +#if ( INCLUDE_uxTaskGetRunTime == 1 ) + + unsigned portBASE_TYPE uxTaskGetRunTime( xTaskHandle xTask ) + { + unsigned long runTime; + + tskTCB *pxTCB; + pxTCB = prvGetTCBFromHandle( xTask ); + runTime = pxTCB->ulRunTimeCounter; + pxTCB->ulRunTimeCounter = 0; + return runTime; + } + +#endif +/*-----------------------------------------------------------*/ + #if ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) ) static unsigned short usTaskCheckFreeStackSpace( const unsigned char * pucStackByte )