From f3f8f2ac5da32d3551a339e646c29c151de1f224 Mon Sep 17 00:00:00 2001 From: quaK <38787176+Joelrau@users.noreply.github.com> Date: Fri, 10 Feb 2023 23:30:51 +0200 Subject: [PATCH] add thread names --- src/client/component/thread_names.cpp | 62 +++++++++++++++++++++++++++ src/client/game/structs.hpp | 25 +++++++++++ 2 files changed, 87 insertions(+) create mode 100644 src/client/component/thread_names.cpp diff --git a/src/client/component/thread_names.cpp b/src/client/component/thread_names.cpp new file mode 100644 index 00000000..ceda5e8e --- /dev/null +++ b/src/client/component/thread_names.cpp @@ -0,0 +1,62 @@ +#include +#include "loader/component_loader.hpp" + +#include "scheduler.hpp" + +#include "game/game.hpp" + +#include + +namespace thread_names +{ + namespace + { + void set_thread_names() + { + static std::unordered_map thread_names = + { + {game::THREAD_CONTEXT_MAIN, "Main"}, + {game::THREAD_CONTEXT_BACKEND, "Backend"}, // Renderer + {game::THREAD_CONTEXT_WORKER0, "Worker0"}, + {game::THREAD_CONTEXT_WORKER1, "Worker1"}, + {game::THREAD_CONTEXT_WORKER2, "Worker2"}, + {game::THREAD_CONTEXT_WORKER3, "Worker3"}, + {game::THREAD_CONTEXT_WORKER4, "Worker4"}, + {game::THREAD_CONTEXT_WORKER5, "Worker5"}, + {game::THREAD_CONTEXT_WORKER6, "Worker6"}, + {game::THREAD_CONTEXT_WORKER7, "Worker7"}, + {game::THREAD_CONTEXT_SERVER, "Server"}, + {game::THREAD_CONTEXT_CINEMATIC, "Cinematic"}, + {game::THREAD_CONTEXT_WINDOW, "Window"}, + {game::THREAD_CONTEXT_WINDOW, "Input"}, + {game::THREAD_CONTEXT_DATABASE, "Database"}, + {game::THREAD_CONTEXT_SOUND_STREAM, "Sound Stream"}, + {game::THREAD_CONTEXT_SOUND, "Snd stream packet callback"}, + {game::THREAD_CONTEXT_RECIPE, "Recipe"}, + }; + + for (const auto& thread_name : thread_names) + { + const auto id = game::threadIds[thread_name.first]; + if (id) + { + utils::thread::set_name(id, thread_name.second); + } + } + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + set_thread_names(); + scheduler::once(set_thread_names, scheduler::pipeline::main); + scheduler::once(set_thread_names, scheduler::pipeline::renderer); + scheduler::once(set_thread_names, scheduler::pipeline::server); + } + }; +} + +REGISTER_COMPONENT(thread_names::component) \ No newline at end of file diff --git a/src/client/game/structs.hpp b/src/client/game/structs.hpp index d321dd5b..d81126e2 100644 --- a/src/client/game/structs.hpp +++ b/src/client/game/structs.hpp @@ -412,6 +412,31 @@ namespace game CRITSECT_DEMONWARE = 39, }; + enum ThreadContext + { + THREAD_CONTEXT_MAIN = 0, + THREAD_CONTEXT_BACKEND = 1, + THREAD_CONTEXT_WORKER0 = 2, + THREAD_CONTEXT_WORKER1 = 3, + THREAD_CONTEXT_WORKER2 = 4, + THREAD_CONTEXT_WORKER3 = 5, + THREAD_CONTEXT_WORKER4 = 6, + THREAD_CONTEXT_WORKER5 = 7, + THREAD_CONTEXT_WORKER6 = 8, + THREAD_CONTEXT_WORKER7 = 9, + THREAD_CONTEXT_SERVER = 10, + THREAD_CONTEXT_CINEMATIC = 11, + THREAD_CONTEXT_WINDOW = 12, + THREAD_CONTEXT_INPUT = 13, + THREAD_CONTEXT_DATABASE = 14, + THREAD_CONTEXT_SOUND_STREAM = 15, + THREAD_CONTEXT_SOUND = 16, + THREAD_CONTEXT_UNKNOWN17 = 17, + THREAD_CONTEXT_UNKNOWN18 = 18, + THREAD_CONTEXT_UNKNOWN19 = 19, + THREAD_CONTEXT_RECIPE = 20, + }; + namespace entity { enum connstate_t : std::uint32_t