All random numbers generated via one PRNG seeded in one place.
[invirt/third/libt4.git] / threaded_log.cc
index 0160f33..3218e33 100644 (file)
@@ -1,20 +1,14 @@
-#include "threaded_log.h"
 #include "t4.h"
-
-static std::mutex log_mutex;
-static std::map<thread::id, int> thread_name_map;
-static int next_thread_num = 0;
-static std::map<const void *, int> instance_name_map;
-static int next_instance_num = 0;
-int DEBUG_LEVEL = 0;
+#include "types.h"
+#include "threaded_log.h"
 
 using namespace std::chrono;
 
 locked_ostream && _log_prefix(locked_ostream && f, const string & file, const string & func) {
     auto thread = std::this_thread::get_id();
-    int tid = thread_name_map[thread];
+    int tid = global->thread_name_map[thread];
     if (tid==0)
-        tid = thread_name_map[thread] = ++next_thread_num;
+        tid = global->thread_name_map[thread] = ++global->next_thread_num;
     auto utime = duration_cast<microseconds>(
             system_clock::now().time_since_epoch()).count() % 1000000000;
     f << std::setfill('0') << std::dec << std::left << std::setw(9) << utime << " ";
@@ -24,13 +18,17 @@ locked_ostream && _log_prefix(locked_ostream && f, const string & file, const st
 }
 
 locked_ostream && _log_member(locked_ostream && f, const void *ptr) {
-    int id = instance_name_map[ptr];
+    int id = global->instance_name_map[ptr];
     if (id == 0)
-        id = instance_name_map[ptr] = ++next_instance_num;
+        id = global->instance_name_map[ptr] = ++global->next_instance_num;
     f << "#" << std::left << std::setw(2) << id << " ";
     return std::move(f);
 }
 
+int _log_debug_level() {
+    return global->DEBUG_LEVEL;
+}
+
 lock _log_lock() {
-    return lock(log_mutex);
+    return lock(global->log_mutex);
 }