jtag: linuxgpiod: drop extra parenthesis
[openocd.git] / src / rtos / ThreadX.c
index a60d5f8bb0a2b1792ddfebb603f0ada3c9c8eb90..5bdd007d42699bc7aaae7439d93fd9d3709fc275 100644 (file)
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
+// SPDX-License-Identifier: GPL-2.0-or-later
 
 /***************************************************************************
  *   Copyright (C) 2011 by Broadcom Corporation                            *
@@ -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;
@@ -364,16 +370,21 @@ static int threadx_update_threads(struct rtos *rtos)
                }
 
                /* Read the thread name */
-               retval =
-                       target_read_buffer(rtos->target,
-                               name_ptr,
-                               THREADX_THREAD_NAME_STR_SIZE,
-                               (uint8_t *)&tmp_str);
-               if (retval != ERROR_OK) {
-                       LOG_ERROR("Error reading thread name from ThreadX target");
-                       return retval;
+               tmp_str[0] = '\x00';
+
+               /* Check if thread has a valid name */
+               if (name_ptr != 0) {
+                       retval =
+                               target_read_buffer(rtos->target,
+                                       name_ptr,
+                                       THREADX_THREAD_NAME_STR_SIZE,
+                                       (uint8_t *)&tmp_str);
+                       if (retval != ERROR_OK) {
+                               LOG_ERROR("Error reading thread name from ThreadX target");
+                               return retval;
+                       }
+                       tmp_str[THREADX_THREAD_NAME_STR_SIZE - 1] = '\x00';
                }
-               tmp_str[THREADX_THREAD_NAME_STR_SIZE-1] = '\x00';
 
                if (tmp_str[0] == '\x00')
                        strcpy(tmp_str, "No Name");

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)