summaryrefslogtreecommitdiffstats
path: root/arch/x86_64/lib
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2026-09-04 11:31:40 -0400
committerJon Santmyer <jon@jonsantmyer.com>2026-09-04 11:31:40 -0400
commit8251da342161767fe203627223ccd4a7026701c6 (patch)
treeaf2db0f11b0ea8ad35f88663a855bab39a80f679 /arch/x86_64/lib
downloadjove-kernel-8251da342161767fe203627223ccd4a7026701c6.tar.gz
jove-kernel-8251da342161767fe203627223ccd4a7026701c6.tar.bz2
jove-kernel-8251da342161767fe203627223ccd4a7026701c6.zip
initial commit. working on tasking
Diffstat (limited to 'arch/x86_64/lib')
-rw-r--r--arch/x86_64/lib/printf.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/arch/x86_64/lib/printf.c b/arch/x86_64/lib/printf.c
new file mode 100644
index 0000000..42ee568
--- /dev/null
+++ b/arch/x86_64/lib/printf.c
@@ -0,0 +1,25 @@
+#include "../hal/serial_com.h"
+#include "lib/printf.h"
+#include "lib/virtterm.h"
+#include "init.h"
+
+int
+kvprintf(const char *fmt, va_list ap)
+{
+ char buffer[256] = { 0 };
+ int r = vsnprintf(buffer, 256, fmt, ap);
+ int wlen = (r > 256 ? 256 : r);
+
+ {
+ jove_owned_obj_t *serial_obj = obj_take(objdir_getlocal(_rootdir_obj, ROOTDIR_SERIAL_COM_I));
+ serial_com_write(serial_obj, buffer, wlen);
+ obj_release(serial_obj);
+
+ jove_owned_obj_t *vt_obj = obj_take(objdir_getlocal(_rootdir_obj, ROOTDIR_VIRTTERM_I));
+ vt_write(vt_obj, buffer, wlen);
+
+ obj_release(vt_obj);
+ }
+
+ return r;
+}