summaryrefslogtreecommitdiff
path: root/src/kernel/printf.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/printf.c')
-rw-r--r--src/kernel/printf.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/kernel/printf.c b/src/kernel/printf.c
index 8267755..b496bce 100644
--- a/src/kernel/printf.c
+++ b/src/kernel/printf.c
@@ -33,10 +33,11 @@
#include <stdbool.h>
#include <stdint.h>
+
#include "printf.h"
//this is my own ugly library
-#include <serial.h>
+#include <klog.h>
//and my options
/**
@@ -161,12 +162,7 @@ static inline void _out_char(char character, void* buffer, size_t idx, size_t ma
{
(void)buffer; (void)idx; (void)maxlen;
if (character) {
-#ifdef SCREEN_OUTPUT
- _putchar_screen(character);
-#else
- _putchar_serial(COM1, character); // later we should figure out a way to not specifify exclusively com1
-#endif
-
+ _putchar(character);
}
}
@@ -874,17 +870,24 @@ static int _vsnprintf(out_fct_type out, char* buffer, const size_t maxlen, const
///////////////////////////////////////////////////////////////////////////////
+#include <smp_sync.h>
+static uint8_t printf_lock = 0;
int printf_(const char* format, ...)
{
+ //BRETT modification
+ lock(&printf_lock);
va_list va;
va_start(va, format);
char buffer[1];
const int ret = _vsnprintf(_out_char, buffer, (size_t)-1, format, va);
va_end(va);
+ unlock(&printf_lock);
return ret;
}
+///////////////////////////////////////////////////////////////////////////////
+
int sprintf_(char* buffer, const char* format, ...)
{