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:
@@ -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
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user