From fc00c656c96528112d05cf0edf8631bd5eaea446 Mon Sep 17 00:00:00 2001 From: Kacper Date: Sun, 7 Dec 2025 20:10:31 +0100 Subject: Add build system scaffolding and libc headers --- lib/libc/stdio/stdout.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 lib/libc/stdio/stdout.c (limited to 'lib/libc/stdio/stdout.c') diff --git a/lib/libc/stdio/stdout.c b/lib/libc/stdio/stdout.c new file mode 100644 index 00000000..7d55c3e7 --- /dev/null +++ b/lib/libc/stdio/stdout.c @@ -0,0 +1,34 @@ +#include +#include +#include +#include +#include + +#define BUFSIZ 4096 + +weak char __stdout_buffer[0]; +static atomic_flag __stdio_lock = ATOMIC_FLAG_INIT; +struct __FILE __stdout = { .fd = STDOUT_FILENO, + .flags = O_WRONLY, + .type = 1, + .buf = __stdout_buffer, + .buf_len = 0, + .buf_size = BUFSIZ, + .buf_pos = 0, + .eof = 0, + .unget_cnt = 0, + .offset = 0, + .next = NULL, + .lock = ATOMIC_FLAG_INIT }; + +struct __FILE *const stdout = (struct __FILE *)&__stdout; + +void __libc_fadd(struct __FILE *f) +{ + LIBC_LOCK(__stdio_lock); + struct __FILE *cur = &__stdout; + while (cur->next) + cur = cur->next; + cur->next = f; + LIBC_UNLOCK(__stdio_lock); +} -- cgit v1.2.3