target/openrisc/or1k: Use 'bool' data type
[fw/openocd] / src / rtos / eCos.c
index 62fb3b7bc29aa4a5f4e474c2006d330836dd8dfc..e6b70730b5d40533b749305bdd4b97e6ecf533c2 100644 (file)
@@ -11,9 +11,7 @@
  *   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, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.           *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
  ***************************************************************************/
 
 #ifdef HAVE_CONFIG_H
 #include "helper/types.h"
 #include "rtos_ecos_stackings.h"
 
-static int eCos_detect_rtos(struct target *target);
+static bool eCos_detect_rtos(struct target *target);
 static int eCos_create(struct target *target);
 static int eCos_update_threads(struct rtos *rtos);
-static int eCos_get_thread_reg_list(struct rtos *rtos, int64_t thread_id, char **hex_reg_list);
+static int eCos_get_thread_reg_list(struct rtos *rtos, int64_t thread_id, struct rtos_reg **reg_list, int *num_regs);
 static int eCos_get_symbol_list_to_lookup(symbol_table_elem_t *symbol_list[]);
 
 struct eCos_thread_state {
@@ -174,7 +172,6 @@ static int eCos_update_threads(struct rtos *rtos)
                                sizeof(struct thread_detail) * thread_list_size);
                rtos->thread_details->threadid = 1;
                rtos->thread_details->exists = true;
-               rtos->thread_details->display_str = NULL;
                rtos->thread_details->extra_info_str = NULL;
                rtos->thread_details->thread_name_str = malloc(sizeof(tmp_str));
                strcpy(rtos->thread_details->thread_name_str, tmp_str);
@@ -264,13 +261,11 @@ static int eCos_update_threads(struct rtos *rtos)
                        state_desc = "Unknown state";
 
                rtos->thread_details[tasks_found].extra_info_str = malloc(strlen(
-                                       state_desc)+1);
-               strcpy(rtos->thread_details[tasks_found].extra_info_str, state_desc);
+                                       state_desc)+8);
+               sprintf(rtos->thread_details[tasks_found].extra_info_str, "State: %s", state_desc);
 
                rtos->thread_details[tasks_found].exists = true;
 
-               rtos->thread_details[tasks_found].display_str = NULL;
-
                tasks_found++;
                prev_thread_ptr = thread_index;
 
@@ -290,13 +285,12 @@ static int eCos_update_threads(struct rtos *rtos)
        return 0;
 }
 
-static int eCos_get_thread_reg_list(struct rtos *rtos, int64_t thread_id, char **hex_reg_list)
+static int eCos_get_thread_reg_list(struct rtos *rtos, int64_t thread_id,
+               struct rtos_reg **reg_list, int *num_regs)
 {
        int retval;
        const struct eCos_params *param;
 
-       *hex_reg_list = NULL;
-
        if (rtos == NULL)
                return -1;
 
@@ -350,7 +344,8 @@ static int eCos_get_thread_reg_list(struct rtos *rtos, int64_t thread_id, char *
                return rtos_generic_stack_read(rtos->target,
                        param->stacking_info,
                        stack_ptr,
-                       hex_reg_list);
+                       reg_list,
+                       num_regs);
        }
 
        return -1;
@@ -359,8 +354,8 @@ static int eCos_get_thread_reg_list(struct rtos *rtos, int64_t thread_id, char *
 static int eCos_get_symbol_list_to_lookup(symbol_table_elem_t *symbol_list[])
 {
        unsigned int i;
-       *symbol_list = malloc(
-                       sizeof(symbol_table_elem_t) * ARRAY_SIZE(eCos_symbol_list));
+       *symbol_list = calloc(
+                       ARRAY_SIZE(eCos_symbol_list), sizeof(symbol_table_elem_t));
 
        for (i = 0; i < ARRAY_SIZE(eCos_symbol_list); i++)
                (*symbol_list)[i].symbol_name = eCos_symbol_list[i];
@@ -368,14 +363,14 @@ static int eCos_get_symbol_list_to_lookup(symbol_table_elem_t *symbol_list[])
        return 0;
 }
 
-static int eCos_detect_rtos(struct target *target)
+static bool eCos_detect_rtos(struct target *target)
 {
        if ((target->rtos->symbols != NULL) &&
                        (target->rtos->symbols[eCos_VAL_thread_list].address != 0)) {
                /* looks like eCos */
-               return 1;
+               return true;
        }
-       return 0;
+       return false;
 }
 
 static int eCos_create(struct target *target)