#include "target/target_type.h"
#include "rtos.h"
#include "helper/log.h"
+#include "helper/types.h"
#include "rtos_standard_stackings.h"
#define FREERTOS_MAX_PRIORITIES 63
0, /* thread_stack_offset; */
52, /* thread_name_offset; */
&rtos_standard_Cortex_M3_stacking, /* stacking_info */
+ },
+ {
+ "hla_target", /* target_name */
+ 4, /* thread_count_width; */
+ 4, /* pointer_width; */
+ 16, /* list_next_offset; */
+ 20, /* list_width; */
+ 8, /* list_elem_next_offset; */
+ 12, /* list_elem_content_offset */
+ 0, /* thread_stack_offset; */
+ 52, /* thread_name_offset; */
+ &rtos_standard_Cortex_M3_stacking, /* stacking_info */
}
};
NULL
};
-#define FREERTOS_NUM_SYMBOLS (sizeof(FreeRTOS_symbol_list)/sizeof(char *))
-
/* TODO: */
/* this is not safe for little endian yet */
/* may be problems reading if sizes are not 32 bit long integers. */
param = (const struct FreeRTOS_params *) rtos->rtos_specific_params;
if (rtos->symbols == NULL) {
- LOG_OUTPUT("No symbols for FreeRTOS\r\n");
+ LOG_ERROR("No symbols for FreeRTOS");
return -3;
}
if (rtos->symbols[FreeRTOS_VAL_uxCurrentNumberOfTasks].address == 0) {
- LOG_OUTPUT("Don't have the number of threads in FreeRTOS \r\n");
+ LOG_ERROR("Don't have the number of threads in FreeRTOS");
return -2;
}
(uint8_t *)&thread_list_size);
if (retval != ERROR_OK) {
- LOG_OUTPUT("Could not read FreeRTOS thread count from target\r\n");
+ LOG_ERROR("Could not read FreeRTOS thread count from target");
return retval;
}
param->pointer_width,
(uint8_t *)&rtos->current_thread);
if (retval != ERROR_OK) {
- LOG_OUTPUT("Error reading current thread in FreeRTOS thread list\r\n");
+ LOG_ERROR("Error reading current thread in FreeRTOS thread list");
return retval;
}
param->thread_count_width,
(uint8_t *)&list_thread_count);
if (retval != ERROR_OK) {
- LOG_OUTPUT("Error reading number of threads in FreeRTOS thread list\r\n");
+ LOG_ERROR("Error reading number of threads in FreeRTOS thread list");
+ free(list_of_lists);
return retval;
}
param->pointer_width,
(uint8_t *)&list_elem_ptr);
if (retval != ERROR_OK) {
- LOG_OUTPUT(
- "Error reading first thread item location in FreeRTOS thread list\r\n");
+ LOG_ERROR("Error reading first thread item location in FreeRTOS thread list");
+ free(list_of_lists);
return retval;
}
param->pointer_width,
(uint8_t *)&(rtos->thread_details[tasks_found].threadid));
if (retval != ERROR_OK) {
- LOG_OUTPUT(
- "Error reading thread list item object in FreeRTOS thread list\r\n");
+ LOG_ERROR("Error reading thread list item object in FreeRTOS thread list");
+ free(list_of_lists);
return retval;
}
FREERTOS_THREAD_NAME_STR_SIZE,
(uint8_t *)&tmp_str);
if (retval != ERROR_OK) {
- LOG_OUTPUT(
- "Error reading first thread item location in FreeRTOS thread list\r\n");
+ LOG_ERROR("Error reading first thread item location in FreeRTOS thread list");
+ free(list_of_lists);
return retval;
}
tmp_str[FREERTOS_THREAD_NAME_STR_SIZE-1] = '\x00';
param->pointer_width,
(uint8_t *)&list_elem_ptr);
if (retval != ERROR_OK) {
- LOG_OUTPUT(
- "Error reading next thread item location in FreeRTOS thread list\r\n");
+ LOG_ERROR("Error reading next thread item location in FreeRTOS thread list");
+ free(list_of_lists);
return retval;
}
}
}
+
free(list_of_lists);
rtos->thread_count = tasks_found;
return 0;
param->pointer_width,
(uint8_t *)&stack_ptr);
if (retval != ERROR_OK) {
- LOG_OUTPUT("Error reading stack frame from FreeRTOS thread\r\n");
+ LOG_ERROR("Error reading stack frame from FreeRTOS thread");
return retval;
}
return rtos_generic_stack_read(rtos->target, param->stacking_info, stack_ptr, hex_reg_list);
-
}
static int FreeRTOS_get_symbol_list_to_lookup(symbol_table_elem_t *symbol_list[])
{
unsigned int i;
*symbol_list = (symbol_table_elem_t *) malloc(
- sizeof(symbol_table_elem_t) * FREERTOS_NUM_SYMBOLS);
+ sizeof(symbol_table_elem_t) * ARRAY_SIZE(FreeRTOS_symbol_list));
- for (i = 0; i < FREERTOS_NUM_SYMBOLS; i++)
+ for (i = 0; i < ARRAY_SIZE(FreeRTOS_symbol_list); i++)
(*symbol_list)[i].symbol_name = FreeRTOS_symbol_list[i];
return 0;
FREERTOS_THREAD_NAME_STR_SIZE,
(uint8_t *)&tmp_str);
if (retval != ERROR_OK) {
- LOG_OUTPUT("Error reading first thread item location in FreeRTOS thread list\r\n");
+ LOG_ERROR("Error reading first thread item location in FreeRTOS thread list");
return retval;
}
tmp_str[FREERTOS_THREAD_NAME_STR_SIZE-1] = '\x00';
i++;
}
if (i >= FREERTOS_NUM_PARAMS) {
- LOG_OUTPUT("Could not find target in FreeRTOS compatibility list\r\n");
+ LOG_ERROR("Could not find target in FreeRTOS compatibility list");
return -1;
}