aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/picolibc-stdio.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/picolibc-stdio.c')
-rw-r--r--lib/picolibc-stdio.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/picolibc-stdio.c b/lib/picolibc-stdio.c
new file mode 100644
index 000000000..1d7514ba2
--- /dev/null
+++ b/lib/picolibc-stdio.c
@@ -0,0 +1,18 @@
+// This file is included in the picolibc build.
+// It makes stdio functions available to the C library.
+
+#include <stdio.h>
+#include <sys/cdefs.h>
+
+// Defined in the runtime package. Writes to the default console (usually, the
+// first UART or an USB-CDC device).
+int runtime_putchar(char, FILE*);
+
+// Define stdin, stdout, and stderr as a single object.
+// This object must not reside in ROM.
+static FILE __stdio = FDEV_SETUP_STREAM(runtime_putchar, NULL, NULL, _FDEV_SETUP_WRITE);
+
+// Define the underlying structs for stdin, stdout, and stderr.
+FILE *const stdin = &__stdio;
+__strong_reference(stdin, stdout);
+__strong_reference(stdin, stderr);