1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

ps: Add current stack pointer and start of stack to isr_stack ps output (DEVELHELP)

This commit is contained in:
Joakim Nohlgård 2016-06-20 15:27:09 +02:00
parent 44d130f535
commit b02e0eca47
8 changed files with 81 additions and 2 deletions

View File

@ -63,6 +63,16 @@ char *thread_arch_stack_init(thread_task_func_t task_func, void *arg, void *stac
*/
int thread_arch_isr_stack_usage(void);
/**
* @brief Get the current ISR stack pointer
*/
void *thread_arch_isr_stack_pointer(void);
/**
* @brief Get the start of the ISR stack
*/
void *thread_arch_isr_stack_start(void);
/**
* @brief Print the current stack to stdout
*/

View File

@ -35,6 +35,18 @@ int thread_arch_isr_stack_usage(void)
return -1;
}
void *thread_arch_isr_stack_pointer(void)
{
/* TODO */
return (void *)-1;
}
void *thread_arch_isr_stack_start(void)
{
/* TODO */
return (void *)-1;
}
/*----------------------------------------------------------------------------
* Processor specific routine - here for ARM7
* sizeof(void*) = sizeof(int)

View File

@ -205,6 +205,18 @@ int thread_arch_isr_stack_usage(void)
return -1;
}
void *thread_arch_isr_stack_pointer(void)
{
/* TODO */
return (void *)-1;
}
void *thread_arch_isr_stack_start(void)
{
/* TODO */
return (void *)-1;
}
void thread_arch_start_threading(void) __attribute__((naked));
void thread_arch_start_threading(void)
{

View File

@ -267,6 +267,17 @@ int thread_arch_isr_stack_usage(void)
return num_used_words * sizeof(*ptr);
}
void *thread_arch_isr_stack_pointer(void)
{
void *msp = (void *)__get_MSP();
return msp;
}
void *thread_arch_isr_stack_start(void)
{
return (void *)&_sstack;
}
__attribute__((naked)) void NORETURN thread_arch_start_threading(void)
{
__asm__ volatile (

View File

@ -40,6 +40,18 @@ int thread_arch_isr_stack_usage(void)
return -1;
}
void *thread_arch_isr_stack_pointer(void)
{
/* TODO */
return (void *)-1;
}
void *thread_arch_isr_stack_start(void)
{
/* TODO */
return (void *)-1;
}
NORETURN void cpu_switch_context_exit(void)
{
sched_active_thread = sched_threads[0];

View File

@ -62,6 +62,16 @@ int _sig_pipefd[2];
static _native_callback_t native_irq_handlers[255];
char sigalt_stk[SIGSTKSZ];
void *thread_arch_isr_stack_pointer(void)
{
return native_isr_context.uc_stack.ss_sp;
}
void *thread_arch_isr_stack_start(void)
{
return __isr_stack;
}
void print_thread_sigmask(ucontext_t *cp)
{
sigset_t *p = &cp->uc_sigmask;

View File

@ -117,6 +117,16 @@ void thread_yield_higher(void)
irq_restore(old_intr);
}
void *thread_arch_isr_stack_pointer(void)
{
return isr_context.uc_stack.ss_sp;
}
void *thread_arch_isr_stack_start(void)
{
return isr_stack;
}
void isr_cpu_switch_context_exit(void)
{
DEBUG("XXX: cpu_switch_context_exit(), num_tasks = %d\n", sched_num_threads);

View File

@ -72,9 +72,11 @@ void ps(void)
"state");
#ifdef DEVELHELP
int isr_usage = thread_arch_isr_stack_usage(); /* ISR stack usage */
int isr_usage = thread_arch_isr_stack_usage();
void *isr_start = thread_arch_isr_stack_start();
void *isr_sp = thread_arch_isr_stack_pointer();
printf("\t - | isr_stack | - - |"
" - | %5i (%5i) | -\n", ISR_STACKSIZE, isr_usage);
" - | %5i (%5i) | %10p | %10p\n", ISR_STACKSIZE, isr_usage, isr_start, isr_sp);
overall_stacksz += ISR_STACKSIZE;
if (isr_usage > 0) {
overall_used += isr_usage;