From ff3028ce1baec2522059108331846d3fd320b846 Mon Sep 17 00:00:00 2001 From: Michel JAOUEN Date: Tue, 3 Jan 2012 16:07:55 +0100 Subject: [PATCH] rtos : current_threadid move to rtos context MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I49d9d6d64c418be601d8723cb3eea9c3716ecb6b Signed-off-by: Michel JAOUEN Reviewed-on: http://openocd.zylin.com/343 Tested-by: jenkins Reviewed-by: Evan Hunter Reviewed-by: Øyvind Harboe --- src/rtos/rtos.c | 7 +++---- src/rtos/rtos.h | 3 ++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/rtos/rtos.c b/src/rtos/rtos.c index f7d948660..78a7e9d2f 100644 --- a/src/rtos/rtos.c +++ b/src/rtos/rtos.c @@ -29,7 +29,6 @@ #include "server/gdb_server.h" -static int64_t current_threadid = -1; static void hex_to_str( char* dst, char * hex_src ); static int str_to_hex( char* hex_dst, char* src ); @@ -55,7 +54,6 @@ int rtos_create(Jim_GetOptInfo *goi, struct target * target) { int x; char *cp; - if (! goi->isconfigure) { if (goi->argc != 0) { if (goi->argc != 0) { @@ -115,6 +113,7 @@ int rtos_create(Jim_GetOptInfo *goi, struct target * target) /* Create it */ target->rtos = calloc(1,sizeof(struct rtos)); target->rtos->type = rtos_types[x]; + target->rtos->current_threadid = -1; target->rtos->current_thread = 0; target->rtos->symbols = NULL; target->rtos->target = target; @@ -426,7 +425,7 @@ int rtos_thread_packet(struct connection *connection, char *packet, int packet_s else if ( packet[0] == 'H') // Set current thread ( 'c' for step and continue, 'g' for all other operations ) { if ((packet[1] == 'g') && (target->rtos != NULL)) - sscanf(packet, "Hg%16" SCNx64, ¤t_threadid); + sscanf(packet, "Hg%16" SCNx64, &target->rtos->current_threadid); gdb_put_packet(connection, "OK", 2); return ERROR_OK; } @@ -437,7 +436,7 @@ int rtos_thread_packet(struct connection *connection, char *packet, int packet_s int rtos_get_gdb_reg_list(struct connection *connection) { struct target *target = get_target_from_connection(connection); - + int64_t current_threadid = target->rtos->current_threadid; if ( ( target->rtos != NULL ) && ( current_threadid != -1 ) && ( current_threadid != 0 ) && diff --git a/src/rtos/rtos.h b/src/rtos/rtos.h index 93a980e23..df0812fc6 100644 --- a/src/rtos/rtos.h +++ b/src/rtos/rtos.h @@ -57,7 +57,8 @@ struct rtos symbol_table_elem_t * symbols; struct target *target; - + /* add a context variable instead of global variable */ + int64_t current_threadid; threadid_t current_thread; struct thread_detail* thread_details; int thread_count;