aboutsummaryrefslogtreecommitdiff
path: root/src/rtos
diff options
context:
space:
mode:
authorFrank Dischner <frank.dischner@gmail.com>2022-04-17 21:12:39 -0500
committerTomas Vanek <vanekt@fbl.cz>2022-08-08 20:47:52 +0000
commit3865c411eebf01192ee347a1bd5c201c97ed23a6 (patch)
treef49014277565fc56daee1021753ef93ac55222fc /src/rtos
parentb5dd6faf8d47781f2d7cba25decac79bd2310351 (diff)
downloadriscv-openocd-3865c411eebf01192ee347a1bd5c201c97ed23a6.zip
riscv-openocd-3865c411eebf01192ee347a1bd5c201c97ed23a6.tar.gz
riscv-openocd-3865c411eebf01192ee347a1bd5c201c97ed23a6.tar.bz2
FreeRTOS: Fix current thread ID when no threads are active
When there are no rtos threads or none are active, a fake thread with ID 1 is created for the current execution, but the current thread ID was never set to this new fake ID. This would lead to an incorrect attempt to read stacked registers for this fake thread. Explicitly setting the current thread ID to the fake ID ensures that the registers are read from the core instead of calling freertos_get_thread_reg_list. Signed-off-by: Frank Dischner <frank.dischner@gmail.com> Change-Id: I694509a0e01df089429b20ff1b879fc0592b532d Reviewed-on: https://review.openocd.org/c/openocd/+/6934 Tested-by: jenkins Reviewed-by: Asier Llano <asierllano@gmail.com> Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Diffstat (limited to 'src/rtos')
-rw-r--r--src/rtos/FreeRTOS.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/rtos/FreeRTOS.c b/src/rtos/FreeRTOS.c
index 499759a..5f779ef 100644
--- a/src/rtos/FreeRTOS.c
+++ b/src/rtos/FreeRTOS.c
@@ -207,7 +207,8 @@ static int freertos_update_threads(struct rtos *rtos)
LOG_ERROR("Error allocating memory for %d threads", thread_list_size);
return ERROR_FAIL;
}
- rtos->thread_details->threadid = 1;
+ rtos->current_thread = 1;
+ rtos->thread_details->threadid = rtos->current_thread;
rtos->thread_details->exists = true;
rtos->thread_details->extra_info_str = NULL;
rtos->thread_details->thread_name_str = malloc(sizeof(tmp_str));