1
0
Fork 0

feat: Added nanoprintf, kprintf and GDT

This commit is contained in:
Kevin Alavik 2025-05-14 13:57:53 +02:00
parent aa5a1e8e1a
commit 248879c099
Signed by: cmpsb
GPG key ID: 10D1CC0526FDC6D7
9 changed files with 1346 additions and 5 deletions

28
kernel/src/util/kprintf.c Normal file
View file

@ -0,0 +1,28 @@
#include <dev/serial.h>
#include <util/kprintf.h>
#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>
int kprintf(const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
char buffer[1024];
int length = npf_vsnprintf(buffer, sizeof(buffer), fmt, args);
if (length >= 0 && length < (int)sizeof(buffer))
{
serial_write(COM1, (uint8_t *)buffer, length);
}
va_end(args);
return length;
}

View file

@ -0,0 +1,7 @@
#ifndef KPRINTF_H
#define KPRINTF_H
/* Minimal kprintf using nanoprintf, see external/nanoprintf.h */
int kprintf(const char *fmt, ...);
#endif // KPRINTF_H

8
kernel/src/util/log.h Normal file
View file

@ -0,0 +1,8 @@
#ifndef LOG_H
#define LOG_H
#include <util/kprintf.h>
#define early(fmt, ...) kprintf("early: " fmt "\n", ##__VA_ARGS__)
#endif // LOG_H