From 703878700185666cb569d44cdd0df81bb2ed6bf0 Mon Sep 17 00:00:00 2001 From: Jamie Reece Wilson Date: Tue, 23 Jan 2024 23:03:52 +0000 Subject: [PATCH] [+] Thread name identities --- Include/Aurora/Threading/Threads/IAuroraThread.hpp | 9 +++++---- Source/Threading/Threads/AuOSThread.cpp | 11 +++++++++++ Source/Threading/Threads/AuOSThread.hpp | 4 +++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Include/Aurora/Threading/Threads/IAuroraThread.hpp b/Include/Aurora/Threading/Threads/IAuroraThread.hpp index dd76ba5c..a00b3388 100644 --- a/Include/Aurora/Threading/Threads/IAuroraThread.hpp +++ b/Include/Aurora/Threading/Threads/IAuroraThread.hpp @@ -48,18 +48,19 @@ namespace Aurora::Threading::Threads virtual void SetThrottle(EThreadThrottle throttle) = 0; virtual void SetAffinity(const HWInfo::CpuBitId &mask) = 0; virtual void SetName(const AuString &name) = 0; + virtual void SetNameIdentity(AuUInt32 uNameIdentity) = 0; virtual EThreadPriority GetPriority() = 0; virtual EThreadThrottle GetThrottle() = 0; virtual HWInfo::CpuBitId GetMask() = 0; virtual AuString GetName() = 0; + virtual AuUInt32 GetNameIdentity() = 0; virtual AuUInt64 GetThreadCreationTime(Time::EClock eClock) = 0; - // TODO: will deprecate with a version that does call init on thread and deinit on deinit - // ... just wait for it - /// Registers a thread feature _not_ calling on init - /// It is not possible for this lower level thread object to schedule an init call (defer to async) + // TODO: will deprecate with a version that does call init on thread and deinit on deinit + /// Registers a thread feature _not_ calling on init [for now] + /// It is not possible for this lower level thread object to schedule an init call (defer to async) [for now] /// Use this to register teardown functions virtual void AddLastHopeTlsHook(const AuSPtr &feature) = 0; diff --git a/Source/Threading/Threads/AuOSThread.cpp b/Source/Threading/Threads/AuOSThread.cpp index 7764c56a..ad023ebc 100644 --- a/Source/Threading/Threads/AuOSThread.cpp +++ b/Source/Threading/Threads/AuOSThread.cpp @@ -414,9 +414,15 @@ namespace Aurora::Threading::Threads return; } this->name_ = name; + this->uNameIdentity_ = AuFnv1a32Runtime(name.data(), name.size()); this->UpdateName(); } + void OSThread::SetNameIdentity(AuUInt32 uNameIdentity) + { + this->uNameIdentity_ = uNameIdentity; + } + EThreadThrottle OSThread::GetThrottle() { return this->throttle_; @@ -437,6 +443,11 @@ namespace Aurora::Threading::Threads return this->name_; } + AuUInt32 OSThread::GetNameIdentity() + { + return this->uNameIdentity_; + } + void OSThread::SetAffinity(const HWInfo::CpuBitId &mask) { auto zero = HWInfo::CpuBitId(); diff --git a/Source/Threading/Threads/AuOSThread.hpp b/Source/Threading/Threads/AuOSThread.hpp index e95dded6..df52bf1b 100644 --- a/Source/Threading/Threads/AuOSThread.hpp +++ b/Source/Threading/Threads/AuOSThread.hpp @@ -31,11 +31,13 @@ namespace Aurora::Threading::Threads void SetThrottle(EThreadThrottle prio) override; void SetAffinity(const HWInfo::CpuBitId &mask) override; void SetName(const AuString &name) override; + void SetNameIdentity(AuUInt32 uNameIdentity) override; EThreadPriority GetPriority() override; EThreadThrottle GetThrottle() override; HWInfo::CpuBitId GetMask() override; AuString GetName() override; + AuUInt32 GetNameIdentity() override; void ExecuteInDeadThread(AuFunction callback) override; AuSPtr AsWaitable() override; @@ -122,7 +124,7 @@ namespace Aurora::Threading::Threads AuUInt64 unixThreadId_ = 0; bool detached_ {}; - + AuUInt32 uNameIdentity_ {}; }; void InitThreading();