https://github.com/JDevlieghere created https://github.com/llvm/llvm-project/pull/137543
The debugserver code predates modern C++, but with C++11 and later there's no need to have something like PThreadMutex. This migrates MachThread away from PThreadMutex in preparation for removing it. >From bf532b6d9095d58d66f74cd3d8adfff21ec541c4 Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere <jo...@devlieghere.com> Date: Sun, 27 Apr 2025 11:33:57 -0700 Subject: [PATCH] [debugserver] Migrate MachThread away from PThreadMutex (NFC) The debugserver code predates modern C++, but with C++11 and later there's no need to have something like PThreadMutex. This migrates MachThread away from PThreadMutex in preparation for removing it. --- .../debugserver/source/MacOSX/MachThread.cpp | 15 +++++++-------- lldb/tools/debugserver/source/MacOSX/MachThread.h | 4 +--- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/lldb/tools/debugserver/source/MacOSX/MachThread.cpp b/lldb/tools/debugserver/source/MacOSX/MachThread.cpp index 69e1c9bb0e252..e161b99998b5d 100644 --- a/lldb/tools/debugserver/source/MacOSX/MachThread.cpp +++ b/lldb/tools/debugserver/source/MacOSX/MachThread.cpp @@ -28,11 +28,11 @@ MachThread::MachThread(MachProcess *process, bool is_64_bit, uint64_t unique_thread_id, thread_t mach_port_num) : m_process(process), m_unique_id(unique_thread_id), m_mach_port_number(mach_port_num), m_seq_id(GetSequenceID()), - m_state(eStateUnloaded), m_state_mutex(PTHREAD_MUTEX_RECURSIVE), - m_suspend_count(0), m_stop_exception(), - m_arch_up(DNBArchProtocol::Create(this)), m_reg_sets(NULL), - m_num_reg_sets(0), m_extended_info(), m_dispatch_queue_name(), - m_is_64_bit(is_64_bit), m_pthread_qos_class_decode(nullptr) { + m_state(eStateUnloaded), m_state_mutex(), m_suspend_count(0), + m_stop_exception(), m_arch_up(DNBArchProtocol::Create(this)), + m_reg_sets(NULL), m_num_reg_sets(0), m_extended_info(), + m_dispatch_queue_name(), m_is_64_bit(is_64_bit), + m_pthread_qos_class_decode(nullptr) { nub_size_t num_reg_sets = 0; m_reg_sets = m_arch_up->GetRegisterSetInfo(&num_reg_sets); m_num_reg_sets = num_reg_sets; @@ -469,13 +469,12 @@ bool MachThread::NotifyException(MachException::Data &exc) { } nub_state_t MachThread::GetState() { - // If any other threads access this we will need a mutex for it - PTHREAD_MUTEX_LOCKER(locker, m_state_mutex); + std::lock_guard<std::recursive_mutex> guard(m_state_mutex); return m_state; } void MachThread::SetState(nub_state_t state) { - PTHREAD_MUTEX_LOCKER(locker, m_state_mutex); + std::lock_guard<std::recursive_mutex> guard(m_state_mutex); m_state = state; DNBLogThreadedIf(LOG_THREAD, "MachThread::SetState ( %s ) for tid = 0x%8.8" PRIx64 "", diff --git a/lldb/tools/debugserver/source/MacOSX/MachThread.h b/lldb/tools/debugserver/source/MacOSX/MachThread.h index 0c78ef1a337ed..1086b7c986f11 100644 --- a/lldb/tools/debugserver/source/MacOSX/MachThread.h +++ b/lldb/tools/debugserver/source/MacOSX/MachThread.h @@ -24,8 +24,6 @@ #include "DNBArch.h" #include "DNBRegisterInfo.h" #include "MachException.h" -#include "PThreadCondition.h" -#include "PThreadMutex.h" #include "ThreadInfo.h" @@ -139,7 +137,7 @@ class MachThread { // namesp. uint32_t m_seq_id; // A Sequential ID that increments with each new thread nub_state_t m_state; // The state of our process - PThreadMutex m_state_mutex; // Multithreaded protection for m_state + std::recursive_mutex m_state_mutex; // Multithreaded protection for m_state struct thread_basic_info m_basic_info; // Basic information for a thread used // to see if a thread is valid int32_t m_suspend_count; // The current suspend count > 0 means we have _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits