diff options
Diffstat (limited to 'kernel/src/klibc/stdio.cpp')
| -rw-r--r-- | kernel/src/klibc/stdio.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/kernel/src/klibc/stdio.cpp b/kernel/src/klibc/stdio.cpp new file mode 100644 index 0000000..7e8e283 --- /dev/null +++ b/kernel/src/klibc/stdio.cpp @@ -0,0 +1,34 @@ +#include <klibc/stdio.hpp> +#include <klibc/string.hpp> +#include <utils/flanterm.hpp> +#include <cstdint> +#include <cstddef> +#include <cstdarg> + +#define NANOPRINTF_USE_FIELD_WIDTH_FORMAT_SPECIFIERS 1 +#define NANOPRINTF_USE_PRECISION_FORMAT_SPECIFIERS 1 +#define NANOPRINTF_USE_LARGE_FORMAT_SPECIFIERS 1 +#define NANOPRINTF_USE_SMALL_FORMAT_SPECIFIERS 1 +#define NANOPRINTF_USE_FLOAT_FORMAT_SPECIFIERS 0 +#define NANOPRINTF_USE_BINARY_FORMAT_SPECIFIERS 1 +#define NANOPRINTF_USE_WRITEBACK_FORMAT_SPECIFIERS 0 +#define NANOPRINTF_IMPLEMENTATION +#include <nanoprintf.h> + +#include <cstdint> +#include <cstddef> + +int klibc::_snprintf(char *buffer, std::size_t bufsz, char const *fmt, va_list vlist) { + int const rv = npf_vsnprintf(buffer, bufsz, fmt, vlist); + return rv; +} + +void klibc::printf(const char* fmt, ...) { + va_list val; + va_start(val, fmt); + char buffer[4096]; + memset(buffer,0,4096); + int len = _snprintf(buffer,4096,fmt,val); + utils::flanterm::write(buffer,len); + va_end(val); +}
\ No newline at end of file |
