From 973f572829f1d70f9a5864460c1dd5eb9b58533f Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Sat, 2 May 2015 09:53:57 -0600 Subject: [PATCH] ARMv7-A: Port some assertion debug logic from ARMv7-M --- arch/arm/src/armv7-a/arm_assert.c | 40 +++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/arch/arm/src/armv7-a/arm_assert.c b/arch/arm/src/armv7-a/arm_assert.c index 501119d3ad..0667380378 100644 --- a/arch/arm/src/armv7-a/arm_assert.c +++ b/arch/arm/src/armv7-a/arm_assert.c @@ -134,6 +134,42 @@ static void up_stackdump(uint32_t sp, uint32_t stack_base) # define up_stackdump(sp,stack_base) #endif +/**************************************************************************** + * Name: up_taskdump + ****************************************************************************/ + +#ifdef CONFIG_STACK_COLORATION +static void up_taskdump(FAR struct tcb_s *tcb, FAR void *arg) +{ + /* Dump interesting properties of this task */ + +#ifdef CONFIG_PRINT_TASKNAME + lldbg("%s: PID=%d Stack Used=%lu of %lu\n", + tcb->name, tcb->pid, (unsigned long)up_check_tcbstack(tcb), + (unsigned long)tcb->adj_stack_size); +#else + lldbg("PID: %d Stack Used=%lu of %lu\n", + tcb->pid, (unsigned long)up_check_tcbstack(tcb), + (unsigned long)tcb->adj_stack_size); +#endif +} +#endif + +/**************************************************************************** + * Name: up_showtasks + ****************************************************************************/ + +#ifdef CONFIG_STACK_COLORATION +static inline void up_showtasks(void) +{ + /* Dump interesting properties of each task in the crash environment */ + + sched_foreach(up_taskdump, NULL); +} +#else +# define up_showtasks() +#endif + /**************************************************************************** * Name: up_registerdump ****************************************************************************/ @@ -306,6 +342,10 @@ static void up_dumpstate(void) up_registerdump(); + /* Dump the state of all tasks (if available) */ + + up_showtasks(); + #ifdef CONFIG_ARCH_USBDUMP /* Dump USB trace data */