diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index fa261ba508..498b6cb798 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,7 @@ +2010-06-23 Joel Sherrill + + * libmisc/stackchk/check.c: Clean up to improve coverage. + 2010-06-23 Chris Johns PR 1577/filesystem diff --git a/cpukit/libmisc/stackchk/check.c b/cpukit/libmisc/stackchk/check.c index 711bf41d09..f81a47a727 100644 --- a/cpukit/libmisc/stackchk/check.c +++ b/cpukit/libmisc/stackchk/check.c @@ -116,12 +116,13 @@ static inline bool Stack_check_Frame_pointer_in_range( #define Stack_check_usable_stack_size(_the_stack) \ ((_the_stack)->size - sizeof(Stack_check_Control)) -/* - * Do we have an interrupt stack? - * XXX it would sure be nice if the interrupt stack were also - * stored in a "stack" structure! - */ -Stack_Control Stack_check_Interrupt_stack; +#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE) + /* + * Did RTEMS allocate the interrupt stack? If so, put it in + * Stack_Control format. + */ + Stack_Control Stack_check_Interrupt_stack; +#endif /* * Fill an entire stack area with BYTE_PATTERN. This will be used @@ -381,28 +382,28 @@ void Stack_check_Dump_threads_usage( Stack_Control *stack; char name[5]; - if ( !the_thread ) - return; - - if ( !print_handler ) - return; + /* + * The pointer passed in for the_thread is guaranteed to be non-NULL from + * rtems_iterate_over_all_threads() so no need to check it here. + */ /* * Obtain interrupt stack information */ - - if (the_thread == (Thread_Control *) -1) { - if (Stack_check_Interrupt_stack.area) { + #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE) + if (the_thread == (Thread_Control *) -1) { + if (!Stack_check_Interrupt_stack.area) + return; stack = &Stack_check_Interrupt_stack; the_thread = 0; current = 0; + } else + #else + { + stack = &the_thread->Start.Initial_stack; + current = (void *)_CPU_Context_Get_SP( &the_thread->Registers ); } - else - return; - } else { - stack = &the_thread->Start.Initial_stack; - current = (void *)_CPU_Context_Get_SP( &the_thread->Registers ); - } + #endif low = Stack_check_usable_stack_start(stack); size = Stack_check_usable_stack_size(stack); @@ -468,6 +469,9 @@ void rtems_stack_checker_report_usage_with_plugin( rtems_printk_plugin_t print ) { + if ( !print ) + return; + print_context = context; print_handler = print; @@ -479,8 +483,10 @@ void rtems_stack_checker_report_usage_with_plugin( /* iterate over all threads and dump the usage */ rtems_iterate_over_all_threads( Stack_check_Dump_threads_usage ); - /* dump interrupt stack info if any */ - Stack_check_Dump_threads_usage((Thread_Control *) -1); + #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE) + /* dump interrupt stack info if any */ + Stack_check_Dump_threads_usage((Thread_Control *) -1); + #endif print_context = NULL; print_handler = NULL;