History

Initial public commit for Dis VM

arr committed 10 years ago

Commit f95902eNo parent (first commit)40 files · +9358 −0Browse files

Showing the changes to src/vm/debug.cpp (1 of 40 files). Show all

Unified · Split

src/vm/debug.cpp+45−0
@@ -0,0 +1,45 @@
1//
2// Dis VM
3// File: debug.cpp
4// Author: arr
5//
6
7#include <mutex>
8#include <array>
9#include <debug.h>
10
11namespace
12{
13 std::mutex log_mutex;
14 disvm::debug::log_callback_t log_callback = nullptr;
15}
16
17std::array<bool, static_cast<std::size_t>(disvm::debug::component_trace_t::last) + 1> disvm::debug::trace_enabled = {};
18
19disvm::debug::log_callback_t disvm::debug::set_logging_callback(log_callback_t cb)
20{
21 std::lock_guard<std::mutex> lock{ log_mutex };
22 auto tmp = log_callback;
23 log_callback = cb;
24 return tmp;
25}
26
27void disvm::debug::log_msg(const component_trace_t origin, const log_level_t level, const char *msg_fmt, ...)
28{
29 if (log_callback == nullptr)
30 return;
31
32 if (!is_component_tracing_enabled(origin))
33 return;
34
35 std::va_list args;
36 va_start(args, msg_fmt);
37
38 {
39 std::lock_guard<std::mutex> lock{ log_mutex };
40 if (log_callback != nullptr)
41 log_callback(origin, level, msg_fmt, args);
42 }
43
44 va_end(args);
45}