26 struct rtos_reg **reg_list,
int *num_regs);
39 { 3,
"Blocked mutex" },
40 { 4,
"Blocked receive" },
41 { 5,
"Blocked send" },
42 { 6,
"Blocked reply" },
43 { 7,
"Blocked any flag" },
44 { 8,
"Blocked all flags" },
45 { 9,
"Blocked mbox" },
46 { 10,
"Blocked condition" },
50 #define RIOT_NUM_STATES ARRAY_SIZE(riot_thread_states)
70 #define RIOT_NUM_PARAMS ARRAY_SIZE(riot_params_list)
90 {
"sched_threads",
false},
91 {
"sched_num_threads",
false},
92 {
"sched_active_pid",
false},
93 {
"max_threads",
false},
94 {
"_tcb_name_offset",
true},
140 int16_t active_pid = 0;
143 (uint16_t *)&active_pid);
153 int32_t thread_count = 0;
156 (uint16_t *)&thread_count);
164 uint8_t max_threads = 0;
173 if (thread_count > max_threads) {
206 for (
unsigned int i = 0; i < max_threads; i++) {
211 uint32_t tcb_pointer = 0;
213 threads_base + (i * 4),
221 if (tcb_pointer == 0) {
232 tcb_pointer +
param->thread_status_offset,
250 strdup(
"unknown state");
264 uint32_t name_pointer = 0;
295 strdup(
"Enable DEVELHELP to see task names");
317 struct rtos_reg **reg_list,
int *num_regs)
335 uint32_t tcb_pointer = 0;
337 threads_base + (thread_id * 4),
345 uint32_t stackptr = 0;
347 tcb_pointer +
param->thread_sp_offset,
398 LOG_ERROR(
"Could not find target in RIOT compatibility list");
414 LOG_ERROR(
"No stacking info for architecture");
static struct aice_port_param_s param
static struct armv7m_common * target_to_armv7m(struct target *target)
static bool is_armv7m(const struct armv7m_common *armv7m)
The JTAG interface can be implemented with a software or hardware fifo.
#define LOG_ERROR(expr ...)
static const struct rtos_register_stacking * stacking_info
static int riot_get_symbol_list_to_lookup(struct symbol_table_elem *symbol_list[])
static const struct riot_thread_state riot_thread_states[]
static bool riot_detect_rtos(struct target *target)
static int riot_update_threads(struct rtos *rtos)
static int riot_get_thread_reg_list(struct rtos *rtos, int64_t thread_id, struct rtos_reg **reg_list, int *num_regs)
static struct riot_symbol const riot_symbol_list[]
const struct rtos_type riot_rtos
static const struct riot_params riot_params_list[]
static int riot_create(struct target *target)
int rtos_generic_stack_read(struct target *target, const struct rtos_register_stacking *stacking, int64_t stack_ptr, struct rtos_reg **reg_list, int *num_regs)
void rtos_free_threadlist(struct rtos *rtos)
const struct rtos_register_stacking rtos_riot_cortex_m0_stacking
const struct rtos_register_stacking rtos_riot_cortex_m34_stacking
enum arm_arch arch
ARM architecture version.
unsigned char thread_sp_offset
unsigned char thread_status_offset
struct thread_detail * thread_details
struct symbol_table_elem * symbols
void * rtos_specific_params
threadid_t current_thread
Table should be terminated by an element with NULL in symbol_name.
const char * name
Name of this type of target.
struct target_type * type
int target_read_buffer(struct target *target, target_addr_t address, uint32_t size, uint8_t *buffer)
int target_read_u8(struct target *target, target_addr_t address, uint8_t *value)
int target_read_u16(struct target *target, target_addr_t address, uint16_t *value)
int target_read_u32(struct target *target, target_addr_t address, uint32_t *value)
static const char * target_name(struct target *target)
Returns the instance-specific name of the specified target.
#define ARRAY_SIZE(x)
Compute the number of elements of a variable length array.