rtos: constify symbol names and lists
[fw/openocd] / src / rtos / ChibiOS.c
index 7d1f5cf852eb579bc9ff9cad6394e5360470b83a..46fdca323fcdf7ec1bb3bb80288a0d4c427931b4 100644 (file)
@@ -18,7 +18,7 @@
  *   You should have received a copy of the GNU General Public License     *
  *   along with this program; if not, write to the                         *
  *   Free Software Foundation, Inc.,                                       *
- *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.           *
  ***************************************************************************/
 
 #ifdef HAVE_CONFIG_H
@@ -36,7 +36,6 @@
 #include "helper/types.h"
 #include "rtos_chibios_stackings.h"
 
-
 /**
  * @brief   ChibiOS/RT memory signature record.
  *
@@ -72,7 +71,7 @@ struct ChibiOS_chdebug {
 /**
  * @brief ChibiOS thread states.
  */
-const char *ChibiOS_thread_states[] = {
+static const char * const ChibiOS_thread_states[] = {
        "READY", "CURRENT", "SUSPENDED", "WTSEM", "WTMTX", "WTCOND", "SLEEPING",
        "WTEXIT", "WTOREVT", "WTANDEVT", "SNDMSGQ", "SNDMSG", "WTMSG", "WTQUEUE",
        "FINAL"
@@ -92,14 +91,14 @@ struct ChibiOS_params {
        const struct rtos_register_stacking *stacking_info;
 };
 
-struct ChibiOS_params ChibiOS_params_list[] = {
+static const struct ChibiOS_params ChibiOS_params_list[] = {
        {
-       "cortex_m3",                                                    /* target_name */
+       "cortex_m",                                                     /* target_name */
        0,
        NULL,                                                                   /* stacking_info */
        },
        {
-       "stm32_stlink",                                                 /* target_name */
+       "hla_target",                                                   /* target_name */
        0,
        NULL,                                                                   /* stacking_info */
        }
@@ -128,7 +127,7 @@ enum ChibiOS_symbol_values {
        ChibiOS_VAL_chSysInit = 2
 };
 
-static char *ChibiOS_symbol_list[] = {
+static const char * const ChibiOS_symbol_list[] = {
        "rlist",                /* Thread ready list*/
        "ch_debug",             /* Memory Signatur containing offsets of fields in rlist*/
        "chSysInit",    /* Necessary part of API, used for ChibiOS detection*/
@@ -296,21 +295,8 @@ static int ChibiOS_update_threads(struct rtos *rtos)
        }
 
        /* wipe out previous thread details if any */
-       int j;
-       if (rtos->thread_details) {
-               for (j = 0; j < rtos->thread_count; j++) {
-                       struct thread_detail *current_thread = &rtos->thread_details[j];
-                       if (current_thread->display_str != NULL)
-                               free(current_thread->display_str);
-                       if (current_thread->thread_name_str != NULL)
-                               free(current_thread->thread_name_str);
-                       if (current_thread->extra_info_str != NULL)
-                               free(current_thread->extra_info_str);
-               }
-               free(rtos->thread_details);
-               rtos->thread_details = NULL;
-               rtos->thread_count = 0;
-       }
+       rtos_free_threadlist(rtos);
+
        /* ChibiOS does not save the current thread count. We have to first
         * parse the double linked thread list to check for errors and the number of
         * threads. */
@@ -360,17 +346,17 @@ static int ChibiOS_update_threads(struct rtos *rtos)
                const char tmp_thread_name[] = "Current Execution";
                const char tmp_thread_extra_info[] = "No RTOS thread";
 
-               rtos->thread_details = (struct thread_detail *) malloc(
+               rtos->thread_details = malloc(
                                sizeof(struct thread_detail));
                rtos->thread_details->threadid = 1;
                rtos->thread_details->exists = true;
                rtos->thread_details->display_str = NULL;
 
-               rtos->thread_details->extra_info_str = (char *) malloc(
+               rtos->thread_details->extra_info_str = malloc(
                                sizeof(tmp_thread_extra_info));
                strcpy(rtos->thread_details->extra_info_str, tmp_thread_extra_info);
 
-               rtos->thread_details->thread_name_str = (char *) malloc(
+               rtos->thread_details->thread_name_str = malloc(
                                sizeof(tmp_thread_name));
                strcpy(rtos->thread_details->thread_name_str, tmp_thread_name);
 
@@ -380,7 +366,7 @@ static int ChibiOS_update_threads(struct rtos *rtos)
        }
 
        /* create space for new thread details */
-       rtos->thread_details = (struct thread_detail *) malloc(
+       rtos->thread_details = malloc(
                        sizeof(struct thread_detail) * tasks_found);
        if (!rtos->thread_details) {
                LOG_ERROR("Could not allocate space for thread details");
@@ -429,7 +415,7 @@ static int ChibiOS_update_threads(struct rtos *rtos)
                if (tmp_str[0] == '\x00')
                        strcpy(tmp_str, "No Name");
 
-               curr_thrd_details->thread_name_str = (char *)malloc(
+               curr_thrd_details->thread_name_str = malloc(
                                strlen(tmp_str) + 1);
                strcpy(curr_thrd_details->thread_name_str, tmp_str);
 
@@ -450,7 +436,7 @@ static int ChibiOS_update_threads(struct rtos *rtos)
                else
                        state_desc = "Unknown state";
 
-               curr_thrd_details->extra_info_str = (char *)malloc(strlen(
+               curr_thrd_details->extra_info_str = malloc(strlen(
                                        state_desc)+1);
                strcpy(curr_thrd_details->extra_info_str, state_desc);
 
@@ -463,7 +449,7 @@ static int ChibiOS_update_threads(struct rtos *rtos)
        uint32_t current_thrd;
        /* NOTE: By design, cf_off_name equals readylist_current_offset */
        retval = target_read_u32(rtos->target,
-                                                        current + signature->cf_off_name,
+                                                        rlist + signature->cf_off_name,
                                                         &current_thrd);
        if (retval != ERROR_OK) {
                LOG_ERROR("Could not read current Thread from ChibiOS target");
@@ -511,7 +497,7 @@ static int ChibiOS_get_thread_reg_list(struct rtos *rtos, int64_t thread_id, cha
 static int ChibiOS_get_symbol_list_to_lookup(symbol_table_elem_t *symbol_list[])
 {
        unsigned int i;
-       *symbol_list = (symbol_table_elem_t *) malloc(
+       *symbol_list = malloc(
                        sizeof(symbol_table_elem_t) * ARRAY_SIZE(ChibiOS_symbol_list));
 
        for (i = 0; i < ARRAY_SIZE(ChibiOS_symbol_list); i++)