From abe7fe37d021a71181ae2575f9b3507408c285ba Mon Sep 17 00:00:00 2001 From: "Justin C. Miller" Date: Mon, 20 Feb 2023 11:01:45 -0800 Subject: [PATCH] [libj6] Add formatting j6::syslog wrapper for j6_log To replace all the places where snprintf/j6_log are called with buffers on the stack for most frames. --- src/libraries/j6/j6.module | 2 ++ src/libraries/j6/j6/syslog.hh | 15 +++++++++++++++ src/libraries/j6/syslog.cpp | 26 ++++++++++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 src/libraries/j6/j6/syslog.hh create mode 100644 src/libraries/j6/syslog.cpp diff --git a/src/libraries/j6/j6.module b/src/libraries/j6/j6.module index a6ff0b7..6fd2d9a 100644 --- a/src/libraries/j6/j6.module +++ b/src/libraries/j6/j6.module @@ -8,6 +8,7 @@ j6 = module("j6", "protocol_ids.cpp", "syscalls.s.cog", "sysconf.cpp.cog", + "syslog.cpp", "thread.cpp", ], public_headers = [ @@ -19,6 +20,7 @@ j6 = module("j6", "j6/protocols/service_locator.h", "j6/syscalls.h.cog", "j6/sysconf.h.cog", + "j6/syslog.hh", "j6/thread.hh", "j6/types.h", diff --git a/src/libraries/j6/j6/syslog.hh b/src/libraries/j6/j6/syslog.hh new file mode 100644 index 0000000..a50f578 --- /dev/null +++ b/src/libraries/j6/j6/syslog.hh @@ -0,0 +1,15 @@ +#pragma once +/// \file j6/syslog.hh +/// Utility function for writing messages to the kernel log + +// The kernel depends on libj6 for some shared code, +// but should not include the user-specific code. +#ifndef __j6kernel + +namespace j6 { + +void syslog(const char *fmt, ...); + +} // namespace j6 + +#endif // __j6kernel diff --git a/src/libraries/j6/syslog.cpp b/src/libraries/j6/syslog.cpp new file mode 100644 index 0000000..e74a533 --- /dev/null +++ b/src/libraries/j6/syslog.cpp @@ -0,0 +1,26 @@ +// The kernel depends on libj6 for some shared code, +// but should not include the user-specific code. +#ifndef __j6kernel + +#include +#include + +namespace j6 { + +void +syslog(const char *fmt, ...) +{ + char buffer[200]; + + va_list va; + va_start(va, fmt); + size_t n = util::vformat({buffer, sizeof(buffer) - 1}, fmt, va); + va_end(va); + + buffer[n] = 0; + j6_log(buffer); +} + +} // namespace j6 + +#endif // __j6kernel