forked from Imagelibrary/rtems
cpukit, testsuite: Add rtems_printf and rtems_printer support.
This change adds rtems_printf and related functions and wraps the RTEMS print plugin support into a user API. All references to the plugin are removed and replaced with the rtems_printer interface. Printk and related functions are made to return a valid number of characters formatted and output. The function attribute to check printf functions has been added to rtems_printf and printk. No changes to remove warrnings are part of this patch set. The testsuite has been moved over to the rtems_printer. The testsuite has a mix of rtems_printer access and direct print control via the tmacros.h header file. The support for begink/endk has been removed as it served no purpose and only confused the code base. The testsuite has not been refactored to use rtems_printf. This is future work.
This commit is contained in:
@@ -387,8 +387,7 @@ static inline void *Stack_check_find_high_water_mark(
|
||||
*
|
||||
* Try to print out how much stack was actually used by the task.
|
||||
*/
|
||||
static void *print_context;
|
||||
static rtems_printk_plugin_t print_handler;
|
||||
static const rtems_printer* printer;
|
||||
|
||||
static void Stack_check_Dump_threads_usage(
|
||||
Thread_Control *the_thread
|
||||
@@ -438,8 +437,8 @@ static void Stack_check_Dump_threads_usage(
|
||||
if ( the_thread )
|
||||
#endif
|
||||
{
|
||||
(*print_handler)(
|
||||
print_context,
|
||||
rtems_printf(
|
||||
printer,
|
||||
"0x%08" PRIx32 " %4s",
|
||||
the_thread->Object.id,
|
||||
rtems_object_get_name( the_thread->Object.id, sizeof(name), name )
|
||||
@@ -447,12 +446,12 @@ static void Stack_check_Dump_threads_usage(
|
||||
}
|
||||
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
|
||||
else {
|
||||
(*print_handler)( print_context, "0x%08" PRIx32 " INTR", ~0 );
|
||||
rtems_printf( printer, "0x%08" PRIx32 " INTR", ~0 );
|
||||
}
|
||||
#endif
|
||||
|
||||
(*print_handler)(
|
||||
print_context,
|
||||
rtems_printf(
|
||||
printer,
|
||||
" %010p - %010p %010p %8" PRId32 " ",
|
||||
stack->area,
|
||||
stack->area + stack->size - 1,
|
||||
@@ -461,9 +460,9 @@ static void Stack_check_Dump_threads_usage(
|
||||
);
|
||||
|
||||
if (Stack_check_Initialized == 0) {
|
||||
(*print_handler)( print_context, "Unavailable\n" );
|
||||
rtems_printf( printer, "Unavailable\n" );
|
||||
} else {
|
||||
(*print_handler)( print_context, "%8" PRId32 "\n", used );
|
||||
rtems_printf( printer, "%8" PRId32 "\n", used );
|
||||
}
|
||||
|
||||
|
||||
@@ -489,18 +488,16 @@ static void Stack_check_Dump_threads_usage(
|
||||
*/
|
||||
|
||||
void rtems_stack_checker_report_usage_with_plugin(
|
||||
void *context,
|
||||
rtems_printk_plugin_t print
|
||||
const rtems_printer* printer_
|
||||
)
|
||||
{
|
||||
if ( !print )
|
||||
if ( printer != NULL || ! rtems_print_printer_valid ( printer_ ) )
|
||||
return;
|
||||
|
||||
print_context = context;
|
||||
print_handler = print;
|
||||
printer = printer_;
|
||||
|
||||
(*print)( context, "Stack usage by thread\n");
|
||||
(*print)( context,
|
||||
rtems_printf( printer, "Stack usage by thread\n");
|
||||
rtems_printf( printer,
|
||||
" ID NAME LOW HIGH CURRENT AVAILABLE USED\n"
|
||||
);
|
||||
|
||||
@@ -512,11 +509,12 @@ void rtems_stack_checker_report_usage_with_plugin(
|
||||
Stack_check_Dump_threads_usage((Thread_Control *) -1);
|
||||
#endif
|
||||
|
||||
print_context = NULL;
|
||||
print_handler = NULL;
|
||||
printer = NULL;
|
||||
}
|
||||
|
||||
void rtems_stack_checker_report_usage( void )
|
||||
{
|
||||
rtems_stack_checker_report_usage_with_plugin( NULL, printk_plugin );
|
||||
rtems_printer printer;
|
||||
rtems_print_printer_printk(&printer);
|
||||
rtems_stack_checker_report_usage_with_plugin( &printer );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user