feat: Added nanoprintf, kprintf and GDT
This commit is contained in:
parent
aa5a1e8e1a
commit
248879c099
9 changed files with 1346 additions and 5 deletions
28
kernel/src/util/kprintf.c
Normal file
28
kernel/src/util/kprintf.c
Normal 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;
|
||||
}
|
7
kernel/src/util/kprintf.h
Normal file
7
kernel/src/util/kprintf.h
Normal 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
8
kernel/src/util/log.h
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue