rtos: run rtos create hook only once on autodetect 98/3998/3
authorMatthias Welwarsky <matthias.welwarsky@sysgo.com>
Fri, 17 Feb 2017 15:12:07 +0000 (16:12 +0100)
committerMatthias Welwarsky <matthias@welwarsky.de>
Wed, 21 Feb 2018 12:13:57 +0000 (12:13 +0000)
Whenever a "qSymbol" from gdb is received, the rtos "create"
function was called. Make sure this happens only once and only
if rtos autodetection is used.

Change-Id: Ie5f8632cfce2d64a38dbdb63468302c4e8a784f4
Signed-off-by: Matthias Welwarsky <matthias.welwarsky@sysgo.com>
Reviewed-on: http://openocd.zylin.com/3998
Tested-by: jenkins
Reviewed-by: Sergey A. Borshch <sb-sf@users.sourceforge.net>
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
src/rtos/rtos.c

index 4552a87..497ea8b 100644 (file)
@@ -346,9 +346,11 @@ int rtos_thread_packet(struct connection *connection, char const *packet, int pa
                return ERROR_OK;
        } else if (strncmp(packet, "qSymbol", 7) == 0) {
                if (rtos_qsymbol(connection, packet, packet_size) == 1) {
-                       target->rtos_auto_detect = false;
-                       target->rtos->type->create(target);
-                       target->rtos->type->update_threads(target->rtos);
+                       if (target->rtos_auto_detect == true) {
+                               target->rtos_auto_detect = false;
+                               target->rtos->type->create(target);
+                               target->rtos->type->update_threads(target->rtos);
+                       }
                }
                return ERROR_OK;
        } else if (strncmp(packet, "qfThreadInfo", 12) == 0) {