AK+Kernel+LibC: Add vdbgprintf()

This is like dbgprintf() except it takes a va_list instead of ...
This commit is contained in:
Andreas Kling 2020-08-06 13:36:06 +02:00
parent 2f1d596dd3
commit 3055f73d48
3 changed files with 17 additions and 4 deletions

View file

@ -31,7 +31,9 @@
# include <Kernel/kstdio.h>
# else
# include <AK/Types.h>
# include <stdarg.h>
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, ...);

View file

@ -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;
}

View file

@ -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;