summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/io.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2017-10-23 13:30:44 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-11-06 07:25:51 +0100
commit10827984c2cf54188a9af71b94a7e83197812bb5 (patch)
treed0faa328fff4ed71c72993675a231a1b6a0d710c /cpukit/score/include/rtems/score/io.h
parentsmpscheduler02: Avoid sporadic test failures (diff)
downloadrtems-10827984c2cf54188a9af71b94a7e83197812bb5.tar.bz2
score: Add _IO_Printf() and _IO_Vprintf()
The previous vprintk() implementation had a questionable licence header, lacks support for the 'z' and 'j' format specifiers, is not robust against invalid format specifiers, uses a global variable for output. Replace it with a stripped down version of the FreeBSD kernel kvprintf() function. The new implementation allows a low overhead rtems_snprintf() if necessary. Update #3199. Close #3216.
Diffstat (limited to '')
-rw-r--r--cpukit/score/include/rtems/score/io.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/cpukit/score/include/rtems/score/io.h b/cpukit/score/include/rtems/score/io.h
new file mode 100644
index 0000000000..ae3c57f031
--- /dev/null
+++ b/cpukit/score/include/rtems/score/io.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 embedded brains GmbH. All rights reserved.
+ *
+ * embedded brains GmbH
+ * Dornierstr. 4
+ * 82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
+ *
+ * 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_SCORE_IO_H
+#define _RTEMS_SCORE_IO_H
+
+#include <rtems/score/basedefs.h>
+
+#include <stdarg.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+typedef void ( *IO_Put_char )(int c, void *arg);
+
+int _IO_Printf(
+ IO_Put_char put_char,
+ void *arg,
+ char const *fmt,
+ ...
+) RTEMS_PRINTFLIKE( 3, 4 );
+
+int _IO_Vprintf(
+ IO_Put_char put_char,
+ void *arg,
+ char const *fmt,
+ va_list ap
+);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _RTEMS_SCORE_IO_H */