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