From 3ca7bc7354ea3f8db8384142c2bd8675789e7888 Mon Sep 17 00:00:00 2001 From: Ben McMorran Date: Thu, 20 Oct 2022 15:39:24 -0700 Subject: [PATCH] ThreadX: set current_thread for kernel execution If we just invented thread 1 to represent the current execution, we need to make sure the RTOS object also claims it's the current thread so that threadx_get_thread_reg_list() doesn't attempt to read a thread control block at 0x00000001. Signed-off-by: Ben McMorran Change-Id: I7f71e730d047858898297e4cb31db8e47e0c371c Reviewed-on: https://review.openocd.org/c/openocd/+/7280 Tested-by: jenkins Reviewed-by: Antonio Borneo --- src/rtos/ThreadX.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/rtos/ThreadX.c b/src/rtos/ThreadX.c index 7b76fb625..5f90eb644 100644 --- a/src/rtos/ThreadX.c +++ b/src/rtos/ThreadX.c @@ -320,6 +320,12 @@ static int threadx_update_threads(struct rtos *rtos) rtos->thread_details->thread_name_str = malloc(sizeof(tmp_str)); strcpy(rtos->thread_details->thread_name_str, tmp_str); + /* If we just invented thread 1 to represent the current execution, we + * need to make sure the RTOS object also claims it's the current thread + * so that threadx_get_thread_reg_list() doesn't attempt to read a + * thread control block at 0x00000001. */ + rtos->current_thread = 1; + if (thread_list_size == 0) { rtos->thread_count = 1; return ERROR_OK;