diff options
author | Ian Moffett <ian@osmora.org> | 2024-03-07 17:28:00 -0500 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2024-03-07 17:28:32 -0500 |
commit | bd5969fc876a10b18613302db7087ef3c40f18e1 (patch) | |
tree | 7c2b8619afe902abf99570df2873fbdf40a4d1a1 /lib/mlibc/sysdeps/managarm/generic/ensure.cpp | |
parent | a95b38b1b92b172e6cc4e8e56a88a30cc65907b0 (diff) |
lib: Add mlibc
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'lib/mlibc/sysdeps/managarm/generic/ensure.cpp')
-rw-r--r-- | lib/mlibc/sysdeps/managarm/generic/ensure.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/mlibc/sysdeps/managarm/generic/ensure.cpp b/lib/mlibc/sysdeps/managarm/generic/ensure.cpp new file mode 100644 index 0000000..ab0d84f --- /dev/null +++ b/lib/mlibc/sysdeps/managarm/generic/ensure.cpp @@ -0,0 +1,38 @@ + +#include <stdint.h> +#include <string.h> +#include <assert.h> + +#include <bits/ensure.h> +#include <mlibc/debug.hpp> +#include <mlibc/all-sysdeps.hpp> + +#include <hel.h> +#include <hel-syscalls.h> + +void __frigg_assert_fail(const char *assertion, const char *file, unsigned int line, + const char *function) { + mlibc::panicLogger() << "In function " << function + << ", file " << file << ":" << line << "\n" + << "__ensure(" << assertion << ") failed" << frg::endlog; +} + +namespace mlibc { + void sys_libc_log(const char *message) { + // This implementation is inherently signal-safe. + size_t n = 0; + while(message[n]) + n++; + HEL_CHECK(helLog(message, n)); + } + + void sys_libc_panic() { + // This implementation is inherently signal-safe. + const char *message = "mlibc: Panic!"; + size_t n = 0; + while(message[n]) + n++; + helPanic(message, n); + } +} + |