libxr
Embedded C++ framework for bare-metal, RTOS and Linux
Loading...
Searching...
No Matches
diag.hpp
1#pragma once
2
3#include <cstdint>
4#include <utility>
5
6#include "libxr_cb.hpp"
7
8namespace LibXR::Assert
9{
14using FatalCallback = LibXR::Callback<const char*, uint32_t>;
15
16namespace Detail
17{
18// 进程级 fatal 回调存根 / Process-global fatal callback storage.
19inline FatalCallback fatal_error_callback_; // NOLINT
20} // namespace Detail
21
26inline void RegisterFatalErrorCallback(FatalCallback cb)
27{
28 Detail::fatal_error_callback_ = std::move(cb);
29}
30
37[[nodiscard]] inline FatalCallback FatalErrorCallback()
38{
39 return Detail::fatal_error_callback_;
40}
41
48inline void RunFatalErrorCallback(bool in_isr, const char* file, uint32_t line)
49{
50 if (!Detail::fatal_error_callback_.Empty())
51 {
52 Detail::fatal_error_callback_.Run(in_isr, file, line);
53 }
54}
55} // namespace LibXR::Assert
通用回调包装,支持动态参数传递 / Generic callback wrapper supporting dynamic argument passing
Definition libxr_cb.hpp:143