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:
Chris Johns
2016-05-20 18:39:50 +10:00
parent b1860df53d
commit 24d0ee57a4
90 changed files with 806 additions and 561 deletions

View File

@@ -23,7 +23,7 @@
#define LIBBSP_SHARED_IRQ_INFO_H
#include <rtems/shell.h>
#include <rtems/bspIo.h>
#include <rtems/print.h>
#ifdef __cplusplus
extern "C" {
@@ -34,8 +34,7 @@ extern "C" {
* context @a context.
*/
void bsp_interrupt_report_with_plugin(
void *context,
rtems_printk_plugin_t print
const rtems_printer *printer
);
/**

View File

@@ -21,12 +21,13 @@
#include <inttypes.h>
#include <rtems/print.h>
#include <bsp/irq-generic.h>
#include <bsp/irq-info.h>
typedef struct {
void *context;
rtems_printk_plugin_t print;
const rtems_printer *printer;
rtems_vector_number vector;
} bsp_interrupt_report_entry;
@@ -41,9 +42,9 @@ static void bsp_interrupt_report_per_handler_routine(
bsp_interrupt_report_entry *e = (bsp_interrupt_report_entry *) arg;
const char *opt = options == RTEMS_INTERRUPT_UNIQUE ? "UNIQUE" : "SHARED";
e->print(
e->context,
"%7" PRIu32 " | %-32s | %7s | %010p | %010p\n",
rtems_printf(
e->printer,
"%7" PRIu32 " | %-32s | %7s | %p | %p\n",
e->vector,
info,
opt,
@@ -53,19 +54,17 @@ static void bsp_interrupt_report_per_handler_routine(
}
void bsp_interrupt_report_with_plugin(
void *context,
rtems_printk_plugin_t print
const rtems_printer *printer
)
{
rtems_vector_number v = 0;
bsp_interrupt_report_entry e = {
.context = context,
.print = print,
.printer = printer,
.vector = 0
};
print(
context,
rtems_printf(
printer,
"-------------------------------------------------------------------------------\n"
" INTERRUPT INFORMATION\n"
"--------+----------------------------------+---------+------------+------------\n"
@@ -82,13 +81,15 @@ void bsp_interrupt_report_with_plugin(
);
}
print(
context,
rtems_printf(
printer,
"--------+----------------------------------+---------+------------+------------\n"
);
}
void bsp_interrupt_report(void)
{
bsp_interrupt_report_with_plugin(NULL, printk_plugin);
rtems_printer printer;
rtems_print_printer_printk(&printer);
bsp_interrupt_report_with_plugin(&printer);
}

View File

@@ -27,7 +27,9 @@
static int bsp_interrupt_shell_main(int argc, char **argv)
{
bsp_interrupt_report_with_plugin(stdout, (rtems_printk_plugin_t) fprintf);
rtems_printer printer;
rtems_print_printer_printf(&printer);
bsp_interrupt_report_with_plugin(&printer);
return 0;
}