rtos/ChibiOS: Fix some coding styles
Change-Id: I2648479df1a2dd95f8a57868c4ed4259e0fbbe11 Signed-off-by: Marc Schink <openocd-dev@marcschink.de> Reviewed-on: http://openocd.zylin.com/4989 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
parent
0637047c65
commit
ec30634c13
|
@ -11,7 +11,7 @@ noinst_LTLIBRARIES += %D%/librtos.la
|
||||||
%D%/ThreadX.c \
|
%D%/ThreadX.c \
|
||||||
%D%/eCos.c \
|
%D%/eCos.c \
|
||||||
%D%/linux.c \
|
%D%/linux.c \
|
||||||
%D%/ChibiOS.c \
|
%D%/chibios.c \
|
||||||
%D%/chromium-ec.c \
|
%D%/chromium-ec.c \
|
||||||
%D%/embKernel.c \
|
%D%/embKernel.c \
|
||||||
%D%/mqx.c \
|
%D%/mqx.c \
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
*
|
*
|
||||||
* @details Definition copied from os/kernel/include/chregistry.h of ChibiOS/RT.
|
* @details Definition copied from os/kernel/include/chregistry.h of ChibiOS/RT.
|
||||||
*/
|
*/
|
||||||
struct ChibiOS_chdebug {
|
struct chibios_chdebug {
|
||||||
char ch_identifier[4]; /**< @brief Always set to "main". */
|
char ch_identifier[4]; /**< @brief Always set to "main". */
|
||||||
uint8_t ch_zero; /**< @brief Must be zero. */
|
uint8_t ch_zero; /**< @brief Must be zero. */
|
||||||
uint8_t ch_size; /**< @brief Size of this structure. */
|
uint8_t ch_size; /**< @brief Size of this structure. */
|
||||||
|
@ -69,26 +69,26 @@ struct ChibiOS_chdebug {
|
||||||
/**
|
/**
|
||||||
* @brief ChibiOS thread states.
|
* @brief ChibiOS thread states.
|
||||||
*/
|
*/
|
||||||
static const char * const ChibiOS_thread_states[] = { "READY", "CURRENT",
|
static const char * const chibios_thread_states[] = { "READY", "CURRENT",
|
||||||
"WTSTART", "SUSPENDED", "QUEUED", "WTSEM", "WTMTX", "WTCOND", "SLEEPING",
|
"WTSTART", "SUSPENDED", "QUEUED", "WTSEM", "WTMTX", "WTCOND", "SLEEPING",
|
||||||
"WTEXIT", "WTOREVT", "WTANDEVT", "SNDMSGQ", "SNDMSG", "WTMSG", "FINAL"
|
"WTEXIT", "WTOREVT", "WTANDEVT", "SNDMSGQ", "SNDMSG", "WTMSG", "FINAL"
|
||||||
};
|
};
|
||||||
|
|
||||||
#define CHIBIOS_NUM_STATES (sizeof(ChibiOS_thread_states)/sizeof(char *))
|
#define CHIBIOS_NUM_STATES (sizeof(chibios_thread_states)/sizeof(char *))
|
||||||
|
|
||||||
/* Maximum ChibiOS thread name. There is no real limit set by ChibiOS but 64
|
/* Maximum ChibiOS thread name. There is no real limit set by ChibiOS but 64
|
||||||
* chars ought to be enough.
|
* chars ought to be enough.
|
||||||
*/
|
*/
|
||||||
#define CHIBIOS_THREAD_NAME_STR_SIZE (64)
|
#define CHIBIOS_THREAD_NAME_STR_SIZE (64)
|
||||||
|
|
||||||
struct ChibiOS_params {
|
struct chibios_params {
|
||||||
const char *target_name;
|
const char *target_name;
|
||||||
|
|
||||||
struct ChibiOS_chdebug *signature;
|
struct chibios_chdebug *signature;
|
||||||
const struct rtos_register_stacking *stacking_info;
|
const struct rtos_register_stacking *stacking_info;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct ChibiOS_params ChibiOS_params_list[] = {
|
static struct chibios_params chibios_params_list[] = {
|
||||||
{
|
{
|
||||||
"cortex_m", /* target_name */
|
"cortex_m", /* target_name */
|
||||||
0,
|
0,
|
||||||
|
@ -100,23 +100,23 @@ static struct ChibiOS_params ChibiOS_params_list[] = {
|
||||||
NULL, /* stacking_info */
|
NULL, /* stacking_info */
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
#define CHIBIOS_NUM_PARAMS ((int)(sizeof(ChibiOS_params_list)/sizeof(struct ChibiOS_params)))
|
#define CHIBIOS_NUM_PARAMS ((int)(sizeof(chibios_params_list)/sizeof(struct chibios_params)))
|
||||||
|
|
||||||
static bool ChibiOS_detect_rtos(struct target *target);
|
static bool chibios_detect_rtos(struct target *target);
|
||||||
static int ChibiOS_create(struct target *target);
|
static int chibios_create(struct target *target);
|
||||||
static int ChibiOS_update_threads(struct rtos *rtos);
|
static int chibios_update_threads(struct rtos *rtos);
|
||||||
static int ChibiOS_get_thread_reg_list(struct rtos *rtos, int64_t thread_id,
|
static int chibios_get_thread_reg_list(struct rtos *rtos, int64_t thread_id,
|
||||||
struct rtos_reg **reg_list, int *num_regs);
|
struct rtos_reg **reg_list, int *num_regs);
|
||||||
static int ChibiOS_get_symbol_list_to_lookup(symbol_table_elem_t *symbol_list[]);
|
static int chibios_get_symbol_list_to_lookup(symbol_table_elem_t *symbol_list[]);
|
||||||
|
|
||||||
struct rtos_type ChibiOS_rtos = {
|
struct rtos_type chibios_rtos = {
|
||||||
.name = "ChibiOS",
|
.name = "chibios",
|
||||||
|
|
||||||
.detect_rtos = ChibiOS_detect_rtos,
|
.detect_rtos = chibios_detect_rtos,
|
||||||
.create = ChibiOS_create,
|
.create = chibios_create,
|
||||||
.update_threads = ChibiOS_update_threads,
|
.update_threads = chibios_update_threads,
|
||||||
.get_thread_reg_list = ChibiOS_get_thread_reg_list,
|
.get_thread_reg_list = chibios_get_thread_reg_list,
|
||||||
.get_symbol_list_to_lookup = ChibiOS_get_symbol_list_to_lookup,
|
.get_symbol_list_to_lookup = chibios_get_symbol_list_to_lookup,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -125,13 +125,13 @@ struct rtos_type ChibiOS_rtos = {
|
||||||
* use whatever is available.
|
* use whatever is available.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
enum ChibiOS_symbol_values {
|
enum chibios_symbol_values {
|
||||||
ChibiOS_VAL_rlist = 0,
|
CHIBIOS_VAL_RLIST = 0,
|
||||||
ChibiOS_VAL_ch = 1,
|
CHIBIOS_VAL_CH = 1,
|
||||||
ChibiOS_VAL_ch_debug = 2
|
CHIBIOS_VAL_CH_DEBUG = 2
|
||||||
};
|
};
|
||||||
|
|
||||||
static symbol_table_elem_t ChibiOS_symbol_list[] = {
|
static symbol_table_elem_t chibios_symbol_list[] = {
|
||||||
{ "rlist", 0, true}, /* Thread ready list */
|
{ "rlist", 0, true}, /* Thread ready list */
|
||||||
{ "ch", 0, true}, /* System data structure */
|
{ "ch", 0, true}, /* System data structure */
|
||||||
{ "ch_debug", 0, false}, /* Memory Signature containing offsets of fields in rlist */
|
{ "ch_debug", 0, false}, /* Memory Signature containing offsets of fields in rlist */
|
||||||
|
@ -141,13 +141,13 @@ static symbol_table_elem_t ChibiOS_symbol_list[] = {
|
||||||
/* Offset of the rlist structure within the system data structure (ch) */
|
/* Offset of the rlist structure within the system data structure (ch) */
|
||||||
#define CH_RLIST_OFFSET 0x00
|
#define CH_RLIST_OFFSET 0x00
|
||||||
|
|
||||||
static int ChibiOS_update_memory_signature(struct rtos *rtos)
|
static int chibios_update_memory_signature(struct rtos *rtos)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
struct ChibiOS_params *param;
|
struct chibios_params *param;
|
||||||
struct ChibiOS_chdebug *signature;
|
struct chibios_chdebug *signature;
|
||||||
|
|
||||||
param = (struct ChibiOS_params *) rtos->rtos_specific_params;
|
param = (struct chibios_params *) rtos->rtos_specific_params;
|
||||||
|
|
||||||
/* Free existing memory description.*/
|
/* Free existing memory description.*/
|
||||||
if (param->signature) {
|
if (param->signature) {
|
||||||
|
@ -162,7 +162,7 @@ static int ChibiOS_update_memory_signature(struct rtos *rtos)
|
||||||
}
|
}
|
||||||
|
|
||||||
retval = target_read_buffer(rtos->target,
|
retval = target_read_buffer(rtos->target,
|
||||||
rtos->symbols[ChibiOS_VAL_ch_debug].address,
|
rtos->symbols[CHIBIOS_VAL_CH_DEBUG].address,
|
||||||
sizeof(*signature),
|
sizeof(*signature),
|
||||||
(uint8_t *) signature);
|
(uint8_t *) signature);
|
||||||
if (retval != ERROR_OK) {
|
if (retval != ERROR_OK) {
|
||||||
|
@ -217,7 +217,7 @@ errfree:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int ChibiOS_update_stacking(struct rtos *rtos)
|
static int chibios_update_stacking(struct rtos *rtos)
|
||||||
{
|
{
|
||||||
/* Sometimes the stacking can not be determined only by looking at the
|
/* Sometimes the stacking can not be determined only by looking at the
|
||||||
* target name but only a runtime.
|
* target name but only a runtime.
|
||||||
|
@ -234,15 +234,15 @@ static int ChibiOS_update_stacking(struct rtos *rtos)
|
||||||
* - Since no threads are running during startup, the problem is solved
|
* - Since no threads are running during startup, the problem is solved
|
||||||
* by delaying stacking detection until there are more threads
|
* by delaying stacking detection until there are more threads
|
||||||
* available than the current execution. In which case
|
* available than the current execution. In which case
|
||||||
* ChibiOS_get_thread_reg_list is called.
|
* chibios_get_thread_reg_list is called.
|
||||||
*/
|
*/
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
if (!rtos->rtos_specific_params)
|
if (!rtos->rtos_specific_params)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
struct ChibiOS_params *param;
|
struct chibios_params *param;
|
||||||
param = (struct ChibiOS_params *) rtos->rtos_specific_params;
|
param = (struct chibios_params *) rtos->rtos_specific_params;
|
||||||
|
|
||||||
/* Check for armv7m with *enabled* FPU, i.e. a Cortex-M4 */
|
/* Check for armv7m with *enabled* FPU, i.e. a Cortex-M4 */
|
||||||
struct armv7m_common *armv7m_target = target_to_armv7m(rtos->target);
|
struct armv7m_common *armv7m_target = target_to_armv7m(rtos->target);
|
||||||
|
@ -274,10 +274,10 @@ static int ChibiOS_update_stacking(struct rtos *rtos)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ChibiOS_update_threads(struct rtos *rtos)
|
static int chibios_update_threads(struct rtos *rtos)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
const struct ChibiOS_params *param;
|
const struct chibios_params *param;
|
||||||
int tasks_found = 0;
|
int tasks_found = 0;
|
||||||
int rtos_valid = -1;
|
int rtos_valid = -1;
|
||||||
|
|
||||||
|
@ -289,10 +289,10 @@ static int ChibiOS_update_threads(struct rtos *rtos)
|
||||||
return -3;
|
return -3;
|
||||||
}
|
}
|
||||||
|
|
||||||
param = (const struct ChibiOS_params *) rtos->rtos_specific_params;
|
param = (const struct chibios_params *) rtos->rtos_specific_params;
|
||||||
/* Update the memory signature saved in the target memory */
|
/* Update the memory signature saved in the target memory */
|
||||||
if (!param->signature) {
|
if (!param->signature) {
|
||||||
retval = ChibiOS_update_memory_signature(rtos);
|
retval = chibios_update_memory_signature(rtos);
|
||||||
if (retval != ERROR_OK) {
|
if (retval != ERROR_OK) {
|
||||||
LOG_ERROR("Reading the memory signature of ChibiOS/RT failed");
|
LOG_ERROR("Reading the memory signature of ChibiOS/RT failed");
|
||||||
return retval;
|
return retval;
|
||||||
|
@ -305,10 +305,10 @@ static int ChibiOS_update_threads(struct rtos *rtos)
|
||||||
/* ChibiOS does not save the current thread count. We have to first
|
/* 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
|
* parse the double linked thread list to check for errors and the number of
|
||||||
* threads. */
|
* threads. */
|
||||||
const uint32_t rlist = rtos->symbols[ChibiOS_VAL_rlist].address ?
|
const uint32_t rlist = rtos->symbols[CHIBIOS_VAL_RLIST].address ?
|
||||||
rtos->symbols[ChibiOS_VAL_rlist].address :
|
rtos->symbols[CHIBIOS_VAL_RLIST].address :
|
||||||
rtos->symbols[ChibiOS_VAL_ch].address + CH_RLIST_OFFSET /* ChibiOS3 */;
|
rtos->symbols[CHIBIOS_VAL_CH].address + CH_RLIST_OFFSET /* ChibiOS3 */;
|
||||||
const struct ChibiOS_chdebug *signature = param->signature;
|
const struct chibios_chdebug *signature = param->signature;
|
||||||
uint32_t current;
|
uint32_t current;
|
||||||
uint32_t previous;
|
uint32_t previous;
|
||||||
uint32_t older;
|
uint32_t older;
|
||||||
|
@ -426,19 +426,19 @@ static int ChibiOS_update_threads(struct rtos *rtos)
|
||||||
strcpy(curr_thrd_details->thread_name_str, tmp_str);
|
strcpy(curr_thrd_details->thread_name_str, tmp_str);
|
||||||
|
|
||||||
/* State info */
|
/* State info */
|
||||||
uint8_t threadState;
|
uint8_t thread_state;
|
||||||
const char *state_desc;
|
const char *state_desc;
|
||||||
|
|
||||||
retval = target_read_u8(rtos->target,
|
retval = target_read_u8(rtos->target,
|
||||||
current + signature->cf_off_state, &threadState);
|
current + signature->cf_off_state, &thread_state);
|
||||||
if (retval != ERROR_OK) {
|
if (retval != ERROR_OK) {
|
||||||
LOG_ERROR("Error reading thread state from ChibiOS target");
|
LOG_ERROR("Error reading thread state from ChibiOS target");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (threadState < CHIBIOS_NUM_STATES)
|
if (thread_state < CHIBIOS_NUM_STATES)
|
||||||
state_desc = ChibiOS_thread_states[threadState];
|
state_desc = chibios_thread_states[thread_state];
|
||||||
else
|
else
|
||||||
state_desc = "Unknown";
|
state_desc = "Unknown";
|
||||||
|
|
||||||
|
@ -465,25 +465,25 @@ static int ChibiOS_update_threads(struct rtos *rtos)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ChibiOS_get_thread_reg_list(struct rtos *rtos, int64_t thread_id,
|
static int chibios_get_thread_reg_list(struct rtos *rtos, int64_t thread_id,
|
||||||
struct rtos_reg **reg_list, int *num_regs)
|
struct rtos_reg **reg_list, int *num_regs)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
const struct ChibiOS_params *param;
|
const struct chibios_params *param;
|
||||||
uint32_t stack_ptr = 0;
|
uint32_t stack_ptr = 0;
|
||||||
|
|
||||||
if ((rtos == NULL) || (thread_id == 0) ||
|
if ((rtos == NULL) || (thread_id == 0) ||
|
||||||
(rtos->rtos_specific_params == NULL))
|
(rtos->rtos_specific_params == NULL))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
param = (const struct ChibiOS_params *) rtos->rtos_specific_params;
|
param = (const struct chibios_params *) rtos->rtos_specific_params;
|
||||||
|
|
||||||
if (!param->signature)
|
if (!param->signature)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* Update stacking if it can only be determined from runtime information */
|
/* Update stacking if it can only be determined from runtime information */
|
||||||
if ((param->stacking_info == 0) &&
|
if ((param->stacking_info == 0) &&
|
||||||
(ChibiOS_update_stacking(rtos) != ERROR_OK)) {
|
(chibios_update_stacking(rtos) != ERROR_OK)) {
|
||||||
LOG_ERROR("Failed to determine exact stacking for the target type %s", rtos->target->type->name);
|
LOG_ERROR("Failed to determine exact stacking for the target type %s", rtos->target->type->name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -499,24 +499,24 @@ static int ChibiOS_get_thread_reg_list(struct rtos *rtos, int64_t thread_id,
|
||||||
return rtos_generic_stack_read(rtos->target, param->stacking_info, stack_ptr, reg_list, num_regs);
|
return rtos_generic_stack_read(rtos->target, param->stacking_info, stack_ptr, reg_list, num_regs);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ChibiOS_get_symbol_list_to_lookup(symbol_table_elem_t *symbol_list[])
|
static int chibios_get_symbol_list_to_lookup(symbol_table_elem_t *symbol_list[])
|
||||||
{
|
{
|
||||||
*symbol_list = malloc(sizeof(ChibiOS_symbol_list));
|
*symbol_list = malloc(sizeof(chibios_symbol_list));
|
||||||
|
|
||||||
if (*symbol_list == NULL)
|
if (*symbol_list == NULL)
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
|
|
||||||
memcpy(*symbol_list, ChibiOS_symbol_list, sizeof(ChibiOS_symbol_list));
|
memcpy(*symbol_list, chibios_symbol_list, sizeof(chibios_symbol_list));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool ChibiOS_detect_rtos(struct target *target)
|
static bool chibios_detect_rtos(struct target *target)
|
||||||
{
|
{
|
||||||
if ((target->rtos->symbols != NULL) &&
|
if ((target->rtos->symbols != NULL) &&
|
||||||
((target->rtos->symbols[ChibiOS_VAL_rlist].address != 0) ||
|
((target->rtos->symbols[CHIBIOS_VAL_RLIST].address != 0) ||
|
||||||
(target->rtos->symbols[ChibiOS_VAL_ch].address != 0))) {
|
(target->rtos->symbols[CHIBIOS_VAL_CH].address != 0))) {
|
||||||
|
|
||||||
if (target->rtos->symbols[ChibiOS_VAL_ch_debug].address == 0) {
|
if (target->rtos->symbols[CHIBIOS_VAL_CH_DEBUG].address == 0) {
|
||||||
LOG_INFO("It looks like the target may be running ChibiOS "
|
LOG_INFO("It looks like the target may be running ChibiOS "
|
||||||
"without ch_debug.");
|
"without ch_debug.");
|
||||||
return false;
|
return false;
|
||||||
|
@ -529,11 +529,11 @@ static bool ChibiOS_detect_rtos(struct target *target)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ChibiOS_create(struct target *target)
|
static int chibios_create(struct target *target)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while ((i < CHIBIOS_NUM_PARAMS) &&
|
while ((i < CHIBIOS_NUM_PARAMS) &&
|
||||||
(0 != strcmp(ChibiOS_params_list[i].target_name, target->type->name))) {
|
(0 != strcmp(chibios_params_list[i].target_name, target->type->name))) {
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
if (i >= CHIBIOS_NUM_PARAMS) {
|
if (i >= CHIBIOS_NUM_PARAMS) {
|
||||||
|
@ -542,6 +542,6 @@ static int ChibiOS_create(struct target *target)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
target->rtos->rtos_specific_params = (void *) &ChibiOS_params_list[i];
|
target->rtos->rtos_specific_params = (void *) &chibios_params_list[i];
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
|
@ -31,7 +31,7 @@ extern struct rtos_type FreeRTOS_rtos;
|
||||||
extern struct rtos_type ThreadX_rtos;
|
extern struct rtos_type ThreadX_rtos;
|
||||||
extern struct rtos_type eCos_rtos;
|
extern struct rtos_type eCos_rtos;
|
||||||
extern struct rtos_type Linux_os;
|
extern struct rtos_type Linux_os;
|
||||||
extern struct rtos_type ChibiOS_rtos;
|
extern struct rtos_type chibios_rtos;
|
||||||
extern struct rtos_type chromium_ec_rtos;
|
extern struct rtos_type chromium_ec_rtos;
|
||||||
extern struct rtos_type embKernel_rtos;
|
extern struct rtos_type embKernel_rtos;
|
||||||
extern struct rtos_type mqx_rtos;
|
extern struct rtos_type mqx_rtos;
|
||||||
|
@ -44,7 +44,7 @@ static struct rtos_type *rtos_types[] = {
|
||||||
&FreeRTOS_rtos,
|
&FreeRTOS_rtos,
|
||||||
&eCos_rtos,
|
&eCos_rtos,
|
||||||
&Linux_os,
|
&Linux_os,
|
||||||
&ChibiOS_rtos,
|
&chibios_rtos,
|
||||||
&chromium_ec_rtos,
|
&chromium_ec_rtos,
|
||||||
&embKernel_rtos,
|
&embKernel_rtos,
|
||||||
&mqx_rtos,
|
&mqx_rtos,
|
||||||
|
|
Loading…
Reference in New Issue