diff options
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); + } +} + |