diff options
| author | Jon Santmyer <jon@jonsantmyer.com> | 2026-09-04 11:31:40 -0400 |
|---|---|---|
| committer | Jon Santmyer <jon@jonsantmyer.com> | 2026-09-04 11:31:40 -0400 |
| commit | 8251da342161767fe203627223ccd4a7026701c6 (patch) | |
| tree | af2db0f11b0ea8ad35f88663a855bab39a80f679 /arch/x86_64/lib/printf.c | |
| download | jove-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/printf.c')
| -rw-r--r-- | arch/x86_64/lib/printf.c | 25 |
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; +} |
