X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fdebug.cpp;h=bdd4146cab253e9c57fcf1da3a5e867884c7478a;hb=a3441638c67c9a9f626d7542a53fef6340d42751;hp=8647160b1bed7c20cae3dae6e035bfc23bef521e;hpb=5e507c9829942c434a6f1ae7a4f3a488c7e50bef;p=minetest.git diff --git a/src/debug.cpp b/src/debug.cpp index 8647160b1..bdd4146ca 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -21,13 +21,12 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "porting.h" #include "debug.h" #include "exceptions.h" -#include "threads.h" -#include -#include +#include +#include #include #include #include -#include "threading/mutex.h" +#include #include "threading/mutex_auto_lock.h" #include "config.h" @@ -53,7 +52,7 @@ void sanity_check_fn(const char *assertion, const char *file, #endif errorstream << std::endl << "In thread " << std::hex - << thr_get_current_thread_id() << ":" << std::endl; + << std::this_thread::get_id() << ":" << std::endl; errorstream << file << ":" << line << ": " << function << ": An engine assumption '" << assertion << "' failed." << std::endl; @@ -70,7 +69,7 @@ void fatal_error_fn(const char *msg, const char *file, #endif errorstream << std::endl << "In thread " << std::hex - << thr_get_current_thread_id() << ":" << std::endl; + << std::this_thread::get_id() << ":" << std::endl; errorstream << file << ":" << line << ": " << function << ": A fatal error occured: " << msg << std::endl; @@ -85,19 +84,19 @@ void fatal_error_fn(const char *msg, const char *file, struct DebugStack { - DebugStack(threadid_t id); + DebugStack(std::thread::id id); void print(FILE *file, bool everything); void print(std::ostream &os, bool everything); - threadid_t threadid; + std::thread::id thread_id; char stack[DEBUG_STACK_SIZE][DEBUG_STACK_TEXT_SIZE]; int stack_i; // Points to the lowest empty position int stack_max_i; // Highest i that was seen }; -DebugStack::DebugStack(threadid_t id) +DebugStack::DebugStack(std::thread::id id) { - threadid = id; + thread_id = id; stack_i = 0; stack_max_i = 0; memset(stack, 0, DEBUG_STACK_SIZE*DEBUG_STACK_TEXT_SIZE); @@ -106,57 +105,44 @@ DebugStack::DebugStack(threadid_t id) void DebugStack::print(FILE *file, bool everything) { std::ostringstream os; - os << threadid; + os << thread_id; fprintf(file, "DEBUG STACK FOR THREAD %s:\n", os.str().c_str()); - for(int i=0; i g_debug_stacks; -Mutex g_debug_stacks_mutex; - -void debug_stacks_init() -{ -} +std::map g_debug_stacks; +std::mutex g_debug_stacks_mutex; void debug_stacks_print_to(std::ostream &os) { @@ -164,11 +150,8 @@ void debug_stacks_print_to(std::ostream &os) os<<"Debug stacks:"<::iterator - i = g_debug_stacks.begin(); - i != g_debug_stacks.end(); ++i) - { - i->second->print(os, false); + for (auto it : g_debug_stacks) { + it.second->print(os, false); } } @@ -179,36 +162,29 @@ void debug_stacks_print() DebugStacker::DebugStacker(const char *text) { - threadid_t threadid = thr_get_current_thread_id(); + std::thread::id thread_id = std::this_thread::get_id(); MutexAutoLock lock(g_debug_stacks_mutex); - std::map::iterator n; - n = g_debug_stacks.find(threadid); - if(n != g_debug_stacks.end()) - { + auto n = g_debug_stacks.find(thread_id); + if (n != g_debug_stacks.end()) { m_stack = n->second; - } - else - { + } else { /*DEBUGPRINT("Creating new debug stack for thread %x\n", - (unsigned int)threadid);*/ - m_stack = new DebugStack(threadid); - g_debug_stacks[threadid] = m_stack; + (unsigned int)thread_id);*/ + m_stack = new DebugStack(thread_id); + g_debug_stacks[thread_id] = m_stack; } - if(m_stack->stack_i >= DEBUG_STACK_SIZE) - { + if (m_stack->stack_i >= DEBUG_STACK_SIZE) { m_overflowed = true; - } - else - { + } else { m_overflowed = false; snprintf(m_stack->stack[m_stack->stack_i], DEBUG_STACK_TEXT_SIZE, "%s", text); m_stack->stack_i++; - if(m_stack->stack_i > m_stack->stack_max_i) + if (m_stack->stack_i > m_stack->stack_max_i) m_stack->stack_max_i = m_stack->stack_i; } } @@ -217,18 +193,17 @@ DebugStacker::~DebugStacker() { MutexAutoLock lock(g_debug_stacks_mutex); - if(m_overflowed == true) + if (m_overflowed) return; m_stack->stack_i--; - if(m_stack->stack_i == 0) - { - threadid_t threadid = m_stack->threadid; + if (m_stack->stack_i == 0) { + std::thread::id thread_id = m_stack->thread_id; /*DEBUGPRINT("Deleting debug stack for thread %x\n", - (unsigned int)threadid);*/ + (unsigned int)thread_id);*/ delete m_stack; - g_debug_stacks.erase(threadid); + g_debug_stacks.erase(thread_id); } }