openocd: fix SPDX tag format for files .c
[fw/openocd] / src / rtos / linux.c
index 84b4c6524d8abfd1e374fcf7001997cb05fc8326..f9edabc2bfd63e5056f46772334d57f397d2579f 100644 (file)
@@ -1,20 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
 /***************************************************************************
  *   Copyright (C) 2011 by STEricsson                                      *
  *   Heythem Bouhaja heythem.bouhaja@stericsson.com   : creation           *
  *   Michel JAOUEN michel.jaouen@stericsson.com : adaptation to rtos       *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
  ***************************************************************************/
 
 #ifdef HAVE_CONFIG_H
@@ -30,6 +19,7 @@
 #include "rtos.h"
 #include "rtos_standard_stackings.h"
 #include <target/register.h>
+#include <target/smp.h>
 #include "server/gdb_server.h"
 
 #define LINUX_USER_KERNEL_BORDER 0xc0000000
@@ -191,16 +181,14 @@ static int linux_os_thread_reg_list(struct rtos *rtos,
        /*  search target to perform the access  */
        struct reg **gdb_reg_list;
        struct target_list *head;
-       head = target->head;
        found = 0;
-       do {
+       foreach_smp_target(head, target->smp_targets) {
                if (head->target->coreid == next->core_id) {
                        target = head->target;
                        found = 1;
                        break;
                }
-               head = head->next;
-       } while (head);
+       }
 
        if (found == 0) {
                LOG_ERROR
@@ -397,7 +385,6 @@ static int get_name(struct target *target, struct threads *t)
 static int get_current(struct target *target, int create)
 {
        struct target_list *head;
-       head = target->head;
        uint8_t *buf;
        uint32_t val;
        uint32_t ti_addr;
@@ -413,7 +400,7 @@ static int get_current(struct target *target, int create)
                ctt = ctt->next;
        }
 
-       while (head) {
+       foreach_smp_target(head, target->smp_targets) {
                struct reg **reg_list;
                int reg_list_size;
                int retval;
@@ -474,7 +461,6 @@ static int get_current(struct target *target, int create)
                }
 
                free(reg_list);
-               head = head->next;
        }
 
        free(buffer);
@@ -1394,9 +1380,8 @@ static int linux_os_smp_init(struct target *target)
        struct linux_os *os_linux =
                (struct linux_os *)rtos->rtos_specific_params;
        struct current_thread *ct;
-       head = target->head;
 
-       while (head) {
+       foreach_smp_target(head, target->smp_targets) {
                if (head->target->rtos != rtos) {
                        struct linux_os *smp_os_linux =
                                (struct linux_os *)head->target->rtos->rtos_specific_params;
@@ -1413,8 +1398,6 @@ static int linux_os_smp_init(struct target *target)
                        os_linux->nr_cpus++;
                        free(smp_os_linux);
                }
-
-               head = head->next;
        }
 
        return ERROR_OK;