summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2016-05-20 18:39:50 +1000
committerChris Johns <chrisj@rtems.org>2016-05-25 15:47:34 +1000
commit24d0ee57a4d95f99be6e7e60bd162a30daf0638d (patch)
tree94239c8cc6b21813ca44b6ca89da73f9038914cc /c
parentpsxtests/psxmsgq01: Fix typo (diff)
downloadrtems-24d0ee57a4d95f99be6e7e60bd162a30daf0638d.tar.bz2
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.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/shared/include/irq-info.h5
-rw-r--r--c/src/lib/libbsp/shared/src/irq-info.c29
-rw-r--r--c/src/lib/libbsp/shared/src/irq-shell.c4
3 files changed, 20 insertions, 18 deletions
diff --git a/c/src/lib/libbsp/shared/include/irq-info.h b/c/src/lib/libbsp/shared/include/irq-info.h
index df85c8e568..ea6d629e76 100644
--- a/c/src/lib/libbsp/shared/include/irq-info.h
+++ b/c/src/lib/libbsp/shared/include/irq-info.h
@@ -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
);
/**
diff --git a/c/src/lib/libbsp/shared/src/irq-info.c b/c/src/lib/libbsp/shared/src/irq-info.c
index 7967ee5b16..f5f2323a01 100644
--- a/c/src/lib/libbsp/shared/src/irq-info.c
+++ b/c/src/lib/libbsp/shared/src/irq-info.c
@@ -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);
}
diff --git a/c/src/lib/libbsp/shared/src/irq-shell.c b/c/src/lib/libbsp/shared/src/irq-shell.c
index 0bd63f2b11..512594c133 100644
--- a/c/src/lib/libbsp/shared/src/irq-shell.c
+++ b/c/src/lib/libbsp/shared/src/irq-shell.c
@@ -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;
}