ARMv7-M: Add logic to dump all stack usage on a crash

This commit is contained in:
Gregory Nutt
2015-03-27 10:45:39 -06:00
parent 3c433f7f35
commit 459bf9e885
+40
View File
@@ -134,6 +134,42 @@ static void up_stackdump(uint32_t sp, uint32_t stack_base)
# define up_stackdump(sp,stack_base) # define up_stackdump(sp,stack_base)
#endif #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",
rtcb->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 showtasks()
#endif
/**************************************************************************** /****************************************************************************
* Name: up_registerdump * Name: up_registerdump
****************************************************************************/ ****************************************************************************/
@@ -315,6 +351,10 @@ static void up_dumpstate(void)
up_registerdump(); up_registerdump();
/* Dump the state of all tasks (if available) */
up_showtasks();
#ifdef CONFIG_ARCH_USBDUMP #ifdef CONFIG_ARCH_USBDUMP
/* Dump USB trace data */ /* Dump USB trace data */