openocd: fix SPDX tag format for files .c
[fw/openocd] / src / rtos / mqx.c
index 9f895deed656d10ce1c8f319be76c36ee046a23c..8d483ed3bf17659871e5e27df9deeffad0a8d09f 100644 (file)
@@ -1,19 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
 /***************************************************************************
  *   Copyright (C) 2014 by Marian Cingel                                   *
  *   cingel.marian@gmail.com                                               *
- *                                                                         *
- *   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
@@ -49,8 +38,8 @@
 
 /* types */
 enum mqx_symbols {
-       mqx_VAL_mqx_kernel_data,
-       mqx_VAL_MQX_init_struct,
+       MQX_VAL_MQX_KERNEL_DATA,
+       MQX_VAL_MQX_INIT_STRUCT,
 };
 
 enum mqx_arch {
@@ -199,28 +188,22 @@ static int mqx_is_scheduler_running(
        uint32_t capability_value = 0;
 
        /* get '_mqx_kernel_data' symbol */
-       if (ERROR_OK != mqx_get_symbol(
-               rtos, mqx_VAL_mqx_kernel_data, &kernel_data_symbol
-       )) {
+       if (mqx_get_symbol(rtos, MQX_VAL_MQX_KERNEL_DATA, &kernel_data_symbol) != ERROR_OK)
                return ERROR_FAIL;
-       }
+
        /* get '_mqx_kernel_data' */
-       if (ERROR_OK != mqx_get_member(
-               rtos, kernel_data_symbol, 0, 4,
-               "_mqx_kernel_data", &kernel_data_addr
-       )) {
+       if (mqx_get_member(rtos, kernel_data_symbol, 0, 4,
+               "_mqx_kernel_data", &kernel_data_addr) != ERROR_OK)
                return ERROR_FAIL;
-       }
+
        /* return if '_mqx_kernel_data' is NULL or default 0xFFFFFFFF */
-       if (0 == kernel_data_addr || (uint32_t)(-1) == kernel_data_addr)
+       if (kernel_data_addr == 0 || kernel_data_addr == (uint32_t)(-1))
                return ERROR_FAIL;
        /* get kernel_data->ADDRESSING_CAPABILITY */
-       if (ERROR_OK != mqx_get_member(
-               rtos, kernel_data_addr, MQX_KERNEL_OFFSET_CAPABILITY, 4,
-               "kernel_data->ADDRESSING_CAPABILITY", (void *)&capability_value
-       )) {
+       if (mqx_get_member(rtos, kernel_data_addr, MQX_KERNEL_OFFSET_CAPABILITY, 4,
+               "kernel_data->ADDRESSING_CAPABILITY", (void *)&capability_value) != ERROR_OK)
                return ERROR_FAIL;
-       }
+
        /* check first member, the '_mqx_kernel_data->ADDRESSING_CAPABILITY'.
           it suppose to be set to value 8 */
        if (capability_value != 8) {
@@ -228,12 +211,10 @@ static int mqx_is_scheduler_running(
                return ERROR_FAIL;
        }
        /* get active ptr */
-       if (ERROR_OK != mqx_get_member(
-               rtos, kernel_data_addr, MQX_KERNEL_OFFSET_ACTIVE_TASK, 4,
-               "kernel_data->ACTIVE_PTR", (void *)&active_td_addr
-       )) {
+       if (mqx_get_member(rtos, kernel_data_addr, MQX_KERNEL_OFFSET_ACTIVE_TASK, 4,
+               "kernel_data->ACTIVE_PTR", (void *)&active_td_addr) != ERROR_OK)
                return ERROR_FAIL;
-       }
+
        /* active task is system task, scheduler has not not run yet */
        system_td_addr = kernel_data_addr + MQX_KERNEL_OFFSET_SYSTEM_TASK;
        if (active_td_addr == system_td_addr) {
@@ -251,8 +232,8 @@ static bool mqx_detect_rtos(
 )
 {
        if (
-               (target->rtos->symbols != NULL) &&
-               (target->rtos->symbols[mqx_VAL_mqx_kernel_data].address != 0)
+               (target->rtos->symbols) &&
+               (target->rtos->symbols[MQX_VAL_MQX_KERNEL_DATA].address != 0)
        ) {
                return true;
        }
@@ -268,7 +249,7 @@ static int mqx_create(
 {
        /* check target name against supported architectures */
        for (unsigned int i = 0; i < ARRAY_SIZE(mqx_params_list); i++) {
-               if (0 == strcmp(mqx_params_list[i].target_name, target->type->name)) {
+               if (strcmp(mqx_params_list[i].target_name, target->type->name) == 0) {
                        target->rtos->rtos_specific_params = (void *)&mqx_params_list[i];
                        /* LOG_DEBUG("MQX RTOS - valid architecture: %s", target->type->name); */
                        return 0;
@@ -299,42 +280,34 @@ static int mqx_update_threads(
        /* clear old data */
        rtos_free_threadlist(rtos);
        /* check scheduler */
-       if (ERROR_OK != mqx_is_scheduler_running(rtos))
+       if (mqx_is_scheduler_running(rtos) != ERROR_OK)
                return ERROR_FAIL;
        /* get kernel_data symbol */
-       if (ERROR_OK != mqx_get_symbol(
-               rtos, mqx_VAL_mqx_kernel_data, &kernel_data_addr
-       )) {
+       if (mqx_get_symbol(rtos, MQX_VAL_MQX_KERNEL_DATA, &kernel_data_addr) != ERROR_OK)
                return ERROR_FAIL;
-       }
+
        /* read kernel_data */
-       if (ERROR_OK != mqx_get_member(
-               rtos, kernel_data_addr, 0, 4, "_mqx_kernel_data", &kernel_data_addr
-       )) {
+       if (mqx_get_member(rtos, kernel_data_addr, 0, 4,
+               "_mqx_kernel_data", &kernel_data_addr) != ERROR_OK)
                return ERROR_FAIL;
-       }
+
        /* get task queue address */
        task_queue_addr = kernel_data_addr + MQX_KERNEL_OFFSET_TDLIST;
        /* get task queue size */
-       if (ERROR_OK != mqx_get_member(
-               rtos, task_queue_addr, MQX_QUEUE_OFFSET_SIZE, 2,
-               "kernel_data->TD_LIST.SIZE", &task_queue_size
-       )) {
+       if (mqx_get_member(rtos, task_queue_addr, MQX_QUEUE_OFFSET_SIZE, 2,
+               "kernel_data->TD_LIST.SIZE", &task_queue_size) != ERROR_OK)
                return ERROR_FAIL;
-       }
+
        /* get active ptr */
-       if (ERROR_OK != mqx_get_member(
-               rtos, kernel_data_addr, MQX_KERNEL_OFFSET_ACTIVE_TASK, 4,
-               "kernel_data->ACTIVE_PTR", (void *)&active_td_addr
-       )) {
+       if (mqx_get_member(rtos, kernel_data_addr, MQX_KERNEL_OFFSET_ACTIVE_TASK, 4,
+               "kernel_data->ACTIVE_PTR", (void *)&active_td_addr) != ERROR_OK)
                return ERROR_FAIL;
-       }
 
        /* setup threads info */
        rtos->thread_count = task_queue_size;
        rtos->current_thread = 0;
        rtos->thread_details = calloc(rtos->thread_count, sizeof(struct thread_detail));
-       if (NULL == rtos->thread_details)
+       if (!rtos->thread_details)
                return ERROR_FAIL;
 
        /*      loop over each task and setup thread details,
@@ -355,60 +328,46 @@ static int mqx_update_threads(
                char *state_name = "Unknown";
 
                /* set current taskpool address */
-               if (ERROR_OK != mqx_get_member(
-                       rtos, taskpool_addr, MQX_TASK_OFFSET_NEXT, 4,
-                       "td_struct_ptr->NEXT", &taskpool_addr
-               )) {
+               if (mqx_get_member(rtos, taskpool_addr, MQX_TASK_OFFSET_NEXT, 4,
+                       "td_struct_ptr->NEXT", &taskpool_addr) != ERROR_OK)
                        return ERROR_FAIL;
-               }
+
                /* get task address from taskpool */
                task_addr = taskpool_addr - MQX_TASK_OFFSET_TDLIST;
                /* get address of 'td_struct_ptr->TEMPLATE_LIST_PTR' */
-               if (ERROR_OK != mqx_get_member(
-                       rtos, task_addr, MQX_TASK_OFFSET_TEMPLATE, 4,
-                       "td_struct_ptr->TEMPLATE_LIST_PTR", &task_template
-               )) {
+               if (mqx_get_member(rtos, task_addr, MQX_TASK_OFFSET_TEMPLATE, 4,
+                       "td_struct_ptr->TEMPLATE_LIST_PTR", &task_template) != ERROR_OK)
                        return ERROR_FAIL;
-               }
+
                /* get address of 'td_struct_ptr->TEMPLATE_LIST_PTR->NAME' */
-               if (ERROR_OK != mqx_get_member(
-                       rtos, task_template, MQX_TASK_TEMPLATE_OFFSET_NAME, 4,
-                       "td_struct_ptr->TEMPLATE_LIST_PTR->NAME", &task_name_addr
-               )) {
+               if (mqx_get_member(rtos, task_template, MQX_TASK_TEMPLATE_OFFSET_NAME, 4,
+                       "td_struct_ptr->TEMPLATE_LIST_PTR->NAME", &task_name_addr) != ERROR_OK)
                        return ERROR_FAIL;
-               }
+
                /* get value of 'td_struct->TEMPLATE_LIST_PTR->NAME' */
-               if (ERROR_OK != mqx_get_member(
-                       rtos, task_name_addr, 0, MQX_THREAD_NAME_LENGTH,
-                       "*td_struct_ptr->TEMPLATE_LIST_PTR->NAME", task_name
-               )) {
+               if (mqx_get_member(rtos, task_name_addr, 0, MQX_THREAD_NAME_LENGTH,
+                       "*td_struct_ptr->TEMPLATE_LIST_PTR->NAME", task_name) != ERROR_OK)
                        return ERROR_FAIL;
-               }
+
                /* always terminate last character by force,
                   otherwise openocd might fail if task_name
                   has corrupted data */
                task_name[MQX_THREAD_NAME_LENGTH] = '\0';
                /* get value of 'td_struct_ptr->TASK_ID' */
-               if (ERROR_OK != mqx_get_member(
-                       rtos, task_addr, MQX_TASK_OFFSET_ID, 4,
-                       "td_struct_ptr->TASK_ID", &task_id
-               )) {
+               if (mqx_get_member(rtos, task_addr, MQX_TASK_OFFSET_ID, 4,
+                       "td_struct_ptr->TASK_ID", &task_id) != ERROR_OK)
                        return ERROR_FAIL;
-               }
+
                /* get task errno */
-               if (ERROR_OK != mqx_get_member(
-                       rtos, task_addr, MQX_TASK_OFFSET_ERROR_CODE, 4,
-                       "td_struct_ptr->TASK_ERROR_CODE", &task_errno
-               )) {
+               if (mqx_get_member(rtos, task_addr, MQX_TASK_OFFSET_ERROR_CODE, 4,
+                       "td_struct_ptr->TASK_ERROR_CODE", &task_errno) != ERROR_OK)
                        return ERROR_FAIL;
-               }
+
                /* get value of 'td_struct_ptr->STATE' */
-               if (ERROR_OK != mqx_get_member(
-                       rtos, task_addr, MQX_TASK_OFFSET_STATE, 4,
-                       "td_struct_ptr->STATE", &task_state
-               )) {
+               if (mqx_get_member(rtos, task_addr, MQX_TASK_OFFSET_STATE, 4,
+                       "td_struct_ptr->STATE", &task_state) != ERROR_OK)
                        return ERROR_FAIL;
-               }
+
                task_state &= MQX_TASK_STATE_MASK;
                /* and search for defined state */
                for (state_index = 0; state_index < ARRAY_SIZE(mqx_states); state_index++) {
@@ -423,7 +382,7 @@ static int mqx_update_threads(
                rtos->thread_details[i].exists = true;
                /* set thread name */
                rtos->thread_details[i].thread_name_str = malloc(strlen((void *)task_name) + 1);
-               if (NULL == rtos->thread_details[i].thread_name_str)
+               if (!rtos->thread_details[i].thread_name_str)
                        return ERROR_FAIL;
                strcpy(rtos->thread_details[i].thread_name_str, (void *)task_name);
                /* set thread extra info
@@ -435,7 +394,7 @@ static int mqx_update_threads(
                 */
                extra_info_length += strlen((void *)state_name) + 7 + 13 + 8 + 15 + 8;
                rtos->thread_details[i].extra_info_str = malloc(extra_info_length + 1);
-               if (NULL == rtos->thread_details[i].extra_info_str)
+               if (!rtos->thread_details[i].extra_info_str)
                        return ERROR_FAIL;
                snprintf(rtos->thread_details[i].extra_info_str, extra_info_length,
                         "State: %s, Address: 0x%" PRIx32 ",  Error Code: %" PRIu32,
@@ -468,29 +427,24 @@ static int mqx_get_thread_reg_list(
                LOG_ERROR("MQX RTOS - invalid threadid: 0x%X", (int)thread_id);
                return ERROR_FAIL;
        }
-       if (ERROR_OK != mqx_is_scheduler_running(rtos))
+       if (mqx_is_scheduler_running(rtos) != ERROR_OK)
                return ERROR_FAIL;
        /* get kernel_data symbol */
-       if (ERROR_OK != mqx_get_symbol(
-               rtos, mqx_VAL_mqx_kernel_data, &kernel_data_addr
-       )) {
+       if (mqx_get_symbol(rtos, MQX_VAL_MQX_KERNEL_DATA, &kernel_data_addr) != ERROR_OK)
                return ERROR_FAIL;
-       }
+
        /* read kernel_data */
-       if (ERROR_OK != mqx_get_member(
-               rtos, kernel_data_addr, 0, 4, "_mqx_kernel_data", &kernel_data_addr
-       )) {
+       if (mqx_get_member(rtos, kernel_data_addr, 0, 4,
+               "_mqx_kernel_data", &kernel_data_addr) != ERROR_OK)
                return ERROR_FAIL;
-       }
+
        /* get task queue address */
        task_queue_addr = kernel_data_addr + MQX_KERNEL_OFFSET_TDLIST;
        /* get task queue size */
-       if (ERROR_OK != mqx_get_member(
-               rtos, task_queue_addr, MQX_QUEUE_OFFSET_SIZE, 2,
-               "kernel_data->TD_LIST.SIZE", &task_queue_size
-       )) {
+       if (mqx_get_member(rtos, task_queue_addr, MQX_QUEUE_OFFSET_SIZE, 2,
+               "kernel_data->TD_LIST.SIZE", &task_queue_size) != ERROR_OK)
                return ERROR_FAIL;
-       }
+
        /* search for taskid */
        for (
                uint32_t i = 0, taskpool_addr = task_queue_addr;
@@ -501,21 +455,17 @@ static int mqx_get_thread_reg_list(
                uint32_t task_id = 0;
                /* set current taskpool address */
                tmp_address = taskpool_addr;
-               if (ERROR_OK != mqx_get_member(
-                       rtos, tmp_address, MQX_TASK_OFFSET_NEXT, 4,
-                       "td_struct_ptr->NEXT", &taskpool_addr
-               )) {
+               if (mqx_get_member(rtos, tmp_address, MQX_TASK_OFFSET_NEXT, 4,
+                       "td_struct_ptr->NEXT", &taskpool_addr) != ERROR_OK)
                        return ERROR_FAIL;
-               }
+
                /* get task address from taskpool */
                task_addr = taskpool_addr - MQX_TASK_OFFSET_TDLIST;
                /* get value of td_struct->TASK_ID */
-               if (ERROR_OK != mqx_get_member(
-                       rtos, task_addr, MQX_TASK_OFFSET_ID, 4,
-                       "td_struct_ptr->TASK_ID", &task_id
-               )) {
+               if (mqx_get_member(rtos, task_addr, MQX_TASK_OFFSET_ID, 4,
+                       "td_struct_ptr->TASK_ID", &task_id) != ERROR_OK)
                        return ERROR_FAIL;
-               }
+
                /* found taskid, break */
                if (task_id == thread_id) {
                        my_task_addr = task_addr;
@@ -527,11 +477,10 @@ static int mqx_get_thread_reg_list(
                return ERROR_FAIL;
        }
        /* get task stack head address */
-       if (ERROR_OK != mqx_get_member(
-               rtos, my_task_addr, MQX_TASK_OFFSET_STACK, 4, "task->STACK_PTR", &stack_ptr
-       )) {
+       if (mqx_get_member(rtos, my_task_addr, MQX_TASK_OFFSET_STACK, 4,
+               "task->STACK_PTR", &stack_ptr) != ERROR_OK)
                return ERROR_FAIL;
-       }
+
        return rtos_generic_stack_read(
                rtos->target, ((struct mqx_params *)rtos->rtos_specific_params)->stacking_info, stack_ptr, reg_list, num_regs
        );
@@ -541,7 +490,7 @@ static int mqx_get_thread_reg_list(
 static int mqx_get_symbol_list_to_lookup(struct symbol_table_elem *symbol_list[])
 {
        *symbol_list = calloc(ARRAY_SIZE(mqx_symbol_list), sizeof(struct symbol_table_elem));
-       if (NULL == *symbol_list)
+       if (!*symbol_list)
                return ERROR_FAIL;
        /* export required symbols */
        for (int i = 0; i < (int)(ARRAY_SIZE(mqx_symbol_list)); i++)