Index: c/src/lib/libbsp/shared/src/irq-info.c
===================================================================
--- c/src/lib/libbsp/shared/src/irq-info.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ c/src/lib/libbsp/shared/src/irq-info.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -22,5 +22,5 @@
 #include <inttypes.h>
 
-#include <rtems/print.h>
+#include <rtems/printer.h>
 
 #include <bsp/irq-generic.h>
Index: c/src/lib/libbsp/shared/src/irq-shell.c
===================================================================
--- c/src/lib/libbsp/shared/src/irq-shell.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ c/src/lib/libbsp/shared/src/irq-shell.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -22,4 +22,5 @@
 #include <stdio.h>
 
+#include <rtems/printer.h>
 #include <rtems/shell.h>
 
Index: cpukit/Makefile.am
===================================================================
--- cpukit/Makefile.am	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/Makefile.am	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -99,4 +99,5 @@
 include_rtems_HEADERS += include/rtems/bspIo.h
 include_rtems_HEADERS += include/rtems/print.h
+include_rtems_HEADERS += include/rtems/printer.h
 include_rtems_HEADERS += include/rtems/userenv.h
 include_rtems_HEADERS += include/rtems/fs.h
Index: cpukit/include/rtems/print.h
===================================================================
--- cpukit/include/rtems/print.h	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/include/rtems/print.h	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -22,5 +22,4 @@
 
 #include <stdarg.h>
-#include <stdio.h>
 
 #ifdef __cplusplus
@@ -28,43 +27,12 @@
 #endif
 
+typedef struct rtems_printer rtems_printer;
+
 /**
- * @defgroup RTEMS Print Support
+ * @defgroup RTEMSPrintSupport RTEMS Print Support
  *
  * This module contains all methods and support related to providing the user
  * with an interface to the kernel level print support.
  */
-
-/**
- * Type definition for function which can be plugged in to certain reporting
- * routines to redirect the output.
- *
- * Use the RTEMS Print interface to call these functions. Do not directly use
- * them.
- *
- * If the user provides their own printer, then they may redirect those reports
- * as they see fit.
- */
-typedef int (*rtems_print_printer)(void *, const char *format, va_list ap);
-
-/**
- * Type definition for the printer structure used to access the kernel print
- * support.
- */
-typedef struct rtems_printer {
-  void                *context;
-  rtems_print_printer  printer;
-} rtems_printer;
-
-/**
- * @brief check if the printer is valid.
- *
- * @param[in] printer Pointer to the printer structure.
- *
- * @return true The printer is valid else false is returned.
- */
-static inline bool rtems_print_printer_valid(const rtems_printer *printer)
-{
-  return printer != NULL && printer->printer != NULL;
-}
 
 /**
@@ -96,46 +64,5 @@
                          va_list              ap);
 
-/**
- * @brief Intiialise the rtems_printer struct to empty.
- *
- * An empty printer prints nothing. You can use this to implement an enable and
- * disable type print implementation.
- *
- * @param[in] printer Pointer to the printer structure.
- */
-static inline void rtems_print_printer_empty(rtems_printer *printer)
-{
-  printer->context = NULL;
-  printer->printer = NULL;
-}
-
-/**
- * @brief Intiialise the rtems_printer struct to printk
- *
- * The printer will output to the kernel printk support.
- *
- * @param[in] printer Pointer to the printer structure.
- */
-void rtems_print_printer_printk(rtems_printer *printer);
-
-/**
- * @brief Intiialise the rtems_printer struct to printf
- *
- * The printer will output to the libc printf support.
- *
- * @param[in] printer Pointer to the printer structure.
- */
-extern void rtems_print_printer_printf(rtems_printer *printer);
-
-/**
- * @brief Intiialise the rtems_printer struct to a fprintf device.
- *
- * The printer will output to the libc fprintf file provided.
- *
- * @param[in] printer Pointer to the printer structure.
- */
-extern void rtems_print_printer_fprintf(rtems_printer *printer, FILE *file);
-
-/**@}*/
+/** @} */
 
 #ifdef __cplusplus
@@ -143,3 +70,3 @@
 #endif
 
-#endif
+#endif /* _RTEMS_PRINT_H */
Index: cpukit/include/rtems/printer.h
===================================================================
--- cpukit/include/rtems/printer.h	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
+++ cpukit/include/rtems/printer.h	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -0,0 +1,119 @@
+/**
+ * @file rtems/print.h
+ *
+ * @brief User print interface to the bspIO print plug in.
+ *
+ * This include file defines the user interface to kernel print methods.
+ */
+
+/*
+ *  Copyright (c) 2016 Chris Johns <chrisj@rtems.org>
+ *  All rights reserved.
+ *
+ *  The license and distribution terms for this file may be
+ *  found in the file LICENSE in this distribution or at
+ *  http://www.rtems.org/license/LICENSE.
+ */
+
+#ifndef _RTEMS_PRINTER_H
+#define _RTEMS_PRINTER_H
+
+#include <rtems/print.h>
+
+#include <stdio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @addtogroup XXX
+ *
+ * @{
+ */
+
+/**
+ * @defgroup RTEMSPrintSupport
+ */
+
+/**
+ * Type definition for function which can be plugged in to certain reporting
+ * routines to redirect the output.
+ *
+ * Use the RTEMS Print interface to call these functions. Do not directly use
+ * them.
+ *
+ * If the user provides their own printer, then they may redirect those reports
+ * as they see fit.
+ */
+typedef int (*rtems_print_printer)(void *, const char *format, va_list ap);
+
+/**
+ * Type definition for the printer structure used to access the kernel print
+ * support.
+ */
+struct rtems_printer {
+  void                *context;
+  rtems_print_printer  printer;
+};
+
+/**
+ * @brief check if the printer is valid.
+ *
+ * @param[in] printer Pointer to the printer structure.
+ *
+ * @return true The printer is valid else false is returned.
+ */
+static inline bool rtems_print_printer_valid(const rtems_printer *printer)
+{
+  return printer != NULL && printer->printer != NULL;
+}
+
+/**
+ * @brief Initializes the rtems_printer struct to empty.
+ *
+ * An empty printer prints nothing. You can use this to implement an enable and
+ * disable type print implementation.
+ *
+ * @param[in] printer Pointer to the printer structure.
+ */
+static inline void rtems_print_printer_empty(rtems_printer *printer)
+{
+  printer->context = NULL;
+  printer->printer = NULL;
+}
+
+/**
+ * @brief Initializes the rtems_printer struct to printk
+ *
+ * The printer will output to the kernel printk support.
+ *
+ * @param[in] printer Pointer to the printer structure.
+ */
+void rtems_print_printer_printk(rtems_printer *printer);
+
+/**
+ * @brief Initializes the rtems_printer struct to printf
+ *
+ * The printer will output to the libc printf support.
+ *
+ * @param[in] printer Pointer to the printer structure.
+ */
+extern void rtems_print_printer_printf(rtems_printer *printer);
+
+/**
+ * @brief Initializes the rtems_printer struct to a fprintf device.
+ *
+ * The printer will output to the libc fprintf file provided.
+ *
+ * @param[in] printer Pointer to the printer structure.
+ */
+extern void rtems_print_printer_fprintf(rtems_printer *printer, FILE *file);
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RTEMS_PRINTER_H */
Index: cpukit/libcsupport/src/print_fprintf.c
===================================================================
--- cpukit/libcsupport/src/print_fprintf.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/libcsupport/src/print_fprintf.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -19,7 +19,5 @@
 #endif
 
-#include <rtems/print.h>
-
-#include <stdio.h>
+#include <rtems/printer.h>
 
 static int rtems_fprintf_plugin(void *context, const char *fmt, va_list ap)
Index: cpukit/libcsupport/src/print_printf.c
===================================================================
--- cpukit/libcsupport/src/print_printf.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/libcsupport/src/print_printf.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -19,7 +19,5 @@
 #endif
 
-#include <rtems/print.h>
-
-#include <stdio.h>
+#include <rtems/printer.h>
 
 int rtems_vprintf(
Index: cpukit/libcsupport/src/printf_plugin.c
===================================================================
--- cpukit/libcsupport/src/printf_plugin.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/libcsupport/src/printf_plugin.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -24,7 +24,5 @@
 #endif
 
-#include <rtems/print.h>
-
-#include <stdio.h>
+#include <rtems/printer.h>
 
 static int rtems_printf_plugin(void *context, const char *format, va_list ap)
Index: cpukit/libcsupport/src/printk_plugin.c
===================================================================
--- cpukit/libcsupport/src/printk_plugin.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/libcsupport/src/printk_plugin.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -19,5 +19,5 @@
 #endif
 
-#include <rtems/print.h>
+#include <rtems/printer.h>
 #include <rtems/bspIo.h>
 
Index: cpukit/libdl/rap.c
===================================================================
--- cpukit/libdl/rap.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/libdl/rap.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -20,4 +20,5 @@
 #endif
 
+#include <stdarg.h>
 #include <stdlib.h>
 #include <stdio.h>
Index: cpukit/libmisc/cpuuse/cpuusagereport.c
===================================================================
--- cpukit/libmisc/cpuuse/cpuusagereport.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/libmisc/cpuuse/cpuusagereport.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -26,4 +26,5 @@
 
 #include <rtems/cpuuse.h>
+#include <rtems/printer.h>
 #include <rtems/score/objectimpl.h>
 #include <rtems/score/threadimpl.h>
Index: cpukit/libmisc/cpuuse/cpuusagetop.c
===================================================================
--- cpukit/libmisc/cpuuse/cpuusagetop.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/libmisc/cpuuse/cpuusagetop.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -33,4 +33,5 @@
 
 #include <rtems/cpuuse.h>
+#include <rtems/printer.h>
 #include <rtems/malloc.h>
 #include <rtems/score/objectimpl.h>
Index: cpukit/libmisc/fb/mw_print.c
===================================================================
--- cpukit/libmisc/fb/mw_print.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/libmisc/fb/mw_print.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -22,4 +22,5 @@
 
 #include <rtems/mw_uid.h>
+#include <rtems/printer.h>
 
 static const char *uid_buttons(
Index: cpukit/libmisc/shell/main_blkstats.c
===================================================================
--- cpukit/libmisc/shell/main_blkstats.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/libmisc/shell/main_blkstats.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -18,4 +18,5 @@
 
 #include <rtems/blkdev.h>
+#include <rtems/printer.h>
 #include <rtems/shellconfig.h>
 
Index: cpukit/libmisc/shell/main_cpuinfo.c
===================================================================
--- cpukit/libmisc/shell/main_cpuinfo.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/libmisc/shell/main_cpuinfo.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -20,4 +20,5 @@
 #include <rtems/shellconfig.h>
 #include <rtems/cpuuse.h>
+#include <rtems/printer.h>
 
 static int rtems_shell_main_cpuinfo(int argc, char **argv)
Index: cpukit/libmisc/shell/main_cpuuse.c
===================================================================
--- cpukit/libmisc/shell/main_cpuuse.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/libmisc/shell/main_cpuuse.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -19,4 +19,5 @@
 #include <rtems.h>
 #include <rtems/cpuuse.h>
+#include <rtems/printer.h>
 #include <rtems/shell.h>
 #include "internal.h"
Index: cpukit/libmisc/shell/main_perioduse.c
===================================================================
--- cpukit/libmisc/shell/main_perioduse.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/libmisc/shell/main_perioduse.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -18,4 +18,5 @@
 
 #include <rtems.h>
+#include <rtems/printer.h>
 #include <rtems/shell.h>
 #include "internal.h"
Index: cpukit/libmisc/shell/main_profreport.c
===================================================================
--- cpukit/libmisc/shell/main_profreport.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/libmisc/shell/main_profreport.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -20,4 +20,5 @@
 
 #include <rtems/profiling.h>
+#include <rtems/printer.h>
 #include <rtems/shell.h>
 #include <rtems/shellconfig.h>
Index: cpukit/libmisc/shell/main_stackuse.c
===================================================================
--- cpukit/libmisc/shell/main_stackuse.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/libmisc/shell/main_stackuse.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -17,4 +17,5 @@
 
 #include <rtems.h>
+#include <rtems/printer.h>
 #include <rtems/stackchk.h>
 #include <rtems/shell.h>
Index: cpukit/libmisc/shell/main_top.c
===================================================================
--- cpukit/libmisc/shell/main_top.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/libmisc/shell/main_top.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -19,4 +19,5 @@
 #include <rtems.h>
 #include <rtems/cpuuse.h>
+#include <rtems/printer.h>
 #include <rtems/shell.h>
 #include "internal.h"
Index: cpukit/libmisc/stackchk/check.c
===================================================================
--- cpukit/libmisc/stackchk/check.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/libmisc/stackchk/check.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -41,4 +41,5 @@
 
 #include <rtems/bspIo.h>
+#include <rtems/printer.h>
 #include <rtems/stackchk.h>
 #include <rtems/score/percpu.h>
Index: cpukit/libmisc/testsupport/test.h
===================================================================
--- cpukit/libmisc/testsupport/test.h	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/libmisc/testsupport/test.h	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -17,5 +17,5 @@
 
 #include <rtems.h>
-#include <rtems/print.h>
+#include <rtems/printer.h>
 #include <rtems/score/atomic.h>
 #include <rtems/score/smpbarrier.h>
Index: cpukit/mghttpd/mongoose.c
===================================================================
--- cpukit/mghttpd/mongoose.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/mghttpd/mongoose.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -5521,5 +5521,5 @@
 }
 #ifdef __rtems__
-#include <rtems/print.h>
+#include <rtems/printer.h>
 
 static int mg_printer_plugin(void *context, const char *fmt, va_list ap) {
Index: cpukit/preinstall.am
===================================================================
--- cpukit/preinstall.am	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/preinstall.am	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -229,4 +229,8 @@
 PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/print.h
 
+$(PROJECT_INCLUDE)/rtems/printer.h: include/rtems/printer.h $(PROJECT_INCLUDE)/rtems/$(dirstamp)
+	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/printer.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/printer.h
+
 $(PROJECT_INCLUDE)/rtems/userenv.h: include/rtems/userenv.h $(PROJECT_INCLUDE)/rtems/$(dirstamp)
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/userenv.h
Index: cpukit/rtems/src/ratemonreportstatistics.c
===================================================================
--- cpukit/rtems/src/ratemonreportstatistics.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/rtems/src/ratemonreportstatistics.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -21,5 +21,5 @@
 #include <rtems/rtems/ratemonimpl.h>
 #include <rtems/rtems/object.h>
-#include <rtems/print.h>
+#include <rtems/printer.h>
 
 #include <inttypes.h>
Index: cpukit/score/src/cpusetprintsupport.c
===================================================================
--- cpukit/score/src/cpusetprintsupport.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ cpukit/score/src/cpusetprintsupport.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -24,5 +24,5 @@
 #include <ctype.h>
 #include <inttypes.h>
-#include <rtems/print.h>
+#include <rtems/printer.h>
 #include <rtems/score/cpusetimpl.h>
 
@@ -50,5 +50,5 @@
     rtems_printf(printer ,"%s: ", description);
     for(i=0; i<_NCPUWORDS; i++)
-      rtems_printf(printer ,"%x", cpuset->__bits[i]);
+      rtems_printf(printer ,"%" PRIx32 "", cpuset->__bits[i]);
     rtems_printf(printer ,"\n");
   }
Index: testsuites/samples/hello/init.c
===================================================================
--- testsuites/samples/hello/init.c	(revision ede1a4182df68b1191b8ef2031f7a1f14813b525)
+++ testsuites/samples/hello/init.c	(revision 506bfc8580c365c48f2200772ddd0985e661ae34)
@@ -12,4 +12,5 @@
 #endif
 
+#include <rtems/printer.h>
 #include <rtems/test.h>
 
