From 3055f73d485c105952416e5a9cb43e47b7816aa3 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 6 Aug 2020 13:36:06 +0200 Subject: [PATCH] AK+Kernel+LibC: Add vdbgprintf() This is like dbgprintf() except it takes a va_list instead of ... --- AK/kstdio.h | 2 ++ Kernel/kprintf.cpp | 14 ++++++++++---- Libraries/LibC/stdio.cpp | 5 +++++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/AK/kstdio.h b/AK/kstdio.h index ad8ee27b1f..a26f54f587 100644 --- a/AK/kstdio.h +++ b/AK/kstdio.h @@ -31,7 +31,9 @@ # include # else # include +# include extern "C" { +int vdbgprintf(const char* fmt, va_list); int dbgprintf(const char* fmt, ...); ssize_t dbgputstr(const char*, ssize_t); int sprintf(char* buf, const char* fmt, ...); diff --git a/Kernel/kprintf.cpp b/Kernel/kprintf.cpp index 743232e939..dbec2ad2eb 100644 --- a/Kernel/kprintf.cpp +++ b/Kernel/kprintf.cpp @@ -176,14 +176,20 @@ extern "C" int kernelputstr(const char* characters, int length) return 0; } -extern "C" int dbgprintf(const char* fmt, ...) +extern "C" int vdbgprintf(const char* fmt, va_list ap) { ScopedSpinLock lock(s_log_lock); color_on(); - va_list ap; - va_start(ap, fmt); int ret = printf_internal(debugger_putch, nullptr, fmt, ap); - va_end(ap); color_off(); return ret; } + +extern "C" int dbgprintf(const char* fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + int ret = vdbgprintf(fmt, ap); + va_end(ap); + return ret; +} diff --git a/Libraries/LibC/stdio.cpp b/Libraries/LibC/stdio.cpp index 8d9c0d0233..f0922acde4 100644 --- a/Libraries/LibC/stdio.cpp +++ b/Libraries/LibC/stdio.cpp @@ -802,6 +802,11 @@ void rewind(FILE* stream) ASSERT(rc == 0); } +int vdbgprintf(const char* fmt, va_list ap) +{ + return printf_internal([](char*&, char ch) { dbgputch(ch); }, nullptr, fmt, ap); +} + int dbgprintf(const char* fmt, ...) { va_list ap;