From a2b53011bec2b39ddfb445b627488e98567a3bee Mon Sep 17 00:00:00 2001 From: Deepika Date: Tue, 29 Aug 2017 15:21:23 -0500 Subject: [PATCH 1/2] Added thread terminate hook Hook was added in RTX4 code to assist test framework to log thread info on thread terminate, which was not working with RTX5. --- rtos/TARGET_CORTEX/mbed_rtx_handlers.c | 27 ++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/rtos/TARGET_CORTEX/mbed_rtx_handlers.c b/rtos/TARGET_CORTEX/mbed_rtx_handlers.c index e5dcabaa79..882d4636af 100644 --- a/rtos/TARGET_CORTEX/mbed_rtx_handlers.c +++ b/rtos/TARGET_CORTEX/mbed_rtx_handlers.c @@ -19,8 +19,17 @@ #include "rtx_evr.h" #include "mbed_rtx.h" #include "mbed_error.h" +#include "RTX_Config.h" + +#ifdef RTE_Compiler_EventRecorder +#include "EventRecorder.h" // Keil::Compiler:Event Recorder +// Used from rtx_evr.c +#define EvtRtxThreadExit EventID(EventLevelAPI, 0xF2U, 0x19U) +#define EvtRtxThreadTerminate EventID(EventLevelAPI, 0xF2U, 0x1AU) +#endif extern void rtos_idle_loop(void); +extern void thread_terminate_hook(osThreadId_t id); __NO_RETURN void osRtxIdleThread (void *argument) { @@ -136,3 +145,21 @@ void EvrRtxMessageQueueError (osMessageQueueId_t mq_id, int32_t status) } #endif + +// RTX hook which gets called when a thread terminates, using the event function to call hook +void EvrRtxThreadExit (void) +{ + osThreadId_t thread_id = osThreadGetId(); + thread_terminate_hook(thread_id); +#if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_EXIT_DISABLE) && defined(RTE_Compiler_EventRecorder)) + EventRecord2(EvtRtxThreadExit, 0U, 0U); +#endif +} + +void EvrRtxThreadTerminate (osThreadId_t thread_id) +{ + thread_terminate_hook(thread_id); +#if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_TERMINATE_DISABLE) && defined(RTE_Compiler_EventRecorder)) + EventRecord2(EvtRtxThreadTerminate, (uint32_t)thread_id, 0U); +#endif +} From 6f5df1f4c3d01db9669109b75576c325057c4744 Mon Sep 17 00:00:00 2001 From: Deepika Date: Fri, 15 Sep 2017 11:39:47 -0500 Subject: [PATCH 2/2] Threads test require more time to finish --- TESTS/mbedmicro-rtos-mbed/threads/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TESTS/mbedmicro-rtos-mbed/threads/main.cpp b/TESTS/mbedmicro-rtos-mbed/threads/main.cpp index 1ece21524d..c0747b39ec 100644 --- a/TESTS/mbedmicro-rtos-mbed/threads/main.cpp +++ b/TESTS/mbedmicro-rtos-mbed/threads/main.cpp @@ -656,7 +656,7 @@ void test_thread_prio() { } utest::v1::status_t test_setup(const size_t number_of_cases) { - GREENTEA_SETUP(15, "default_auto"); + GREENTEA_SETUP(20, "default_auto"); return verbose_test_setup_handler(number_of_cases); }