From 24d0ee57a4d95f99be6e7e60bd162a30daf0638d Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Fri, 20 May 2016 18:39:50 +1000 Subject: 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. --- cpukit/libmisc/stackchk/check.c | 36 +++++++++++++++++------------------- cpukit/libmisc/stackchk/stackchk.h | 5 ++--- 2 files changed, 19 insertions(+), 22 deletions(-) (limited to 'cpukit/libmisc/stackchk') diff --git a/cpukit/libmisc/stackchk/check.c b/cpukit/libmisc/stackchk/check.c index 9c6932e290..93d45de77c 100644 --- a/cpukit/libmisc/stackchk/check.c +++ b/cpukit/libmisc/stackchk/check.c @@ -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 ); } diff --git a/cpukit/libmisc/stackchk/stackchk.h b/cpukit/libmisc/stackchk/stackchk.h index b824057f59..f7f75b63e2 100644 --- a/cpukit/libmisc/stackchk/stackchk.h +++ b/cpukit/libmisc/stackchk/stackchk.h @@ -25,7 +25,7 @@ #include /* bool */ #include /* Thread_Control */ -#include +#include /** * @defgroup libmisc_stackchk Stack Checker Mechanism @@ -71,8 +71,7 @@ void rtems_stack_checker_report_usage( void ); * @note It uses the caller's routine to print the report. */ void rtems_stack_checker_report_usage_with_plugin( - void *context, - rtems_printk_plugin_t print + const rtems_printer *printer ); /************************************************************* -- cgit v1.2.3