Add an implicit __LINE__ to the try_or_raise macro, which gets set in r11 on cpu_assert. Also made status lines smarter about when to call cpu_assert.
34 lines
765 B
C++
34 lines
765 B
C++
/// \file error.h
|
|
/// Error handling definitions
|
|
#pragma once
|
|
|
|
#include <stddef.h>
|
|
#include <uefi/types.h>
|
|
|
|
namespace boot {
|
|
|
|
class console;
|
|
|
|
namespace error {
|
|
|
|
/// Halt or exit the program with the given error status/message
|
|
[[ noreturn ]] void raise(uefi::status status, const wchar_t *message, size_t line = 0);
|
|
|
|
const wchar_t * message(uefi::status status);
|
|
|
|
} // namespace error
|
|
} // namespace boot
|
|
|
|
/// Debugging psuedo-breakpoint.
|
|
void debug_break();
|
|
|
|
/// Helper macro to raise an error if an operation fails.
|
|
/// \arg s An expression evaluating to a UEFI status
|
|
/// \arg m The error message to use on failure
|
|
#define try_or_raise(s, m) \
|
|
do { \
|
|
uefi::status _s = (s); \
|
|
if (uefi::is_error(_s)) ::boot::error::raise(_s, (m), __LINE__); \
|
|
} while(0)
|
|
|