https://github.com/JDevlieghere created https://github.com/llvm/llvm-project/pull/137555
Now that all uses of PThreadMutex have been migrated to their C++ equivalent, this PR removes PThreadMutex itself. >From 1095cfe9cfc0664784884089e52ee50b3976ad4c Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere <jo...@devlieghere.com> Date: Sun, 27 Apr 2025 14:55:34 -0700 Subject: [PATCH] [debugserver] Remove PThreadMutex (NFC) Now that all uses of PThreadMutex have been migrated to their C++ equivalent, this PR removes PThreadMutex itself. --- .../debugserver.xcodeproj/project.pbxproj | 8 -- lldb/tools/debugserver/source/CMakeLists.txt | 1 - lldb/tools/debugserver/source/DNB.cpp | 4 +- lldb/tools/debugserver/source/DNBError.cpp | 1 - .../source/MacOSX/MachException.cpp | 1 - .../debugserver/source/MacOSX/MachException.h | 1 - .../debugserver/source/MacOSX/MachTask.h | 11 +- .../tools/debugserver/source/PThreadMutex.cpp | 66 ---------- lldb/tools/debugserver/source/PThreadMutex.h | 119 ------------------ 9 files changed, 7 insertions(+), 205 deletions(-) delete mode 100644 lldb/tools/debugserver/source/PThreadMutex.cpp delete mode 100644 lldb/tools/debugserver/source/PThreadMutex.h diff --git a/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj b/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj index c25eabcbadab3..f0103008bb27f 100644 --- a/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj +++ b/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj @@ -36,7 +36,6 @@ 26CE05BA115C363E0022F371 /* DNBLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637E00C71334A0024798E /* DNBLog.cpp */; }; 26CE05BB115C363F0022F371 /* DNBRegisterInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637E20C71334A0024798E /* DNBRegisterInfo.cpp */; }; 26CE05BC115C36420022F371 /* PThreadEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637FE0C71334A0024798E /* PThreadEvent.cpp */; }; - 26CE05BD115C36430022F371 /* PThreadMutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2672DBEE0EEF446700E92059 /* PThreadMutex.cpp */; }; 26CE05BE115C36440022F371 /* SysSignal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C638010C71334A0024798E /* SysSignal.cpp */; }; 26CE05BF115C364D0022F371 /* DNBArchImplX86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26CF99A21142EB7400011AAB /* DNBArchImplX86_64.cpp */; }; 26CE05C3115C36580022F371 /* CFString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2695DD9B0D3EC160007E4CA2 /* CFString.cpp */; }; @@ -65,7 +64,6 @@ 456F67591AD46CE9002850C2 /* DNBLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637E00C71334A0024798E /* DNBLog.cpp */; }; 456F675A1AD46CE9002850C2 /* DNBRegisterInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637E20C71334A0024798E /* DNBRegisterInfo.cpp */; }; 456F675B1AD46CE9002850C2 /* PThreadEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C637FE0C71334A0024798E /* PThreadEvent.cpp */; }; - 456F675C1AD46CE9002850C2 /* PThreadMutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2672DBEE0EEF446700E92059 /* PThreadMutex.cpp */; }; 456F675D1AD46CE9002850C2 /* SysSignal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C638010C71334A0024798E /* SysSignal.cpp */; }; 456F675E1AD46CE9002850C2 /* DNBArchImplX86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26CF99A21142EB7400011AAB /* DNBArchImplX86_64.cpp */; }; 456F67621AD46CE9002850C2 /* CFString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2695DD9B0D3EC160007E4CA2 /* CFString.cpp */; }; @@ -102,7 +100,6 @@ 26593A060D4931CC001C9FE3 /* ChangeLog */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ChangeLog; sourceTree = "<group>"; }; 266B5ECF1460A68200E43F0A /* DNBArchImplARM64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DNBArchImplARM64.cpp; sourceTree = "<group>"; }; 266B5ED01460A68200E43F0A /* DNBArchImplARM64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DNBArchImplARM64.h; sourceTree = "<group>"; }; - 2672DBEE0EEF446700E92059 /* PThreadMutex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PThreadMutex.cpp; sourceTree = "<group>"; }; 2695DD910D3EBFF6007E4CA2 /* CFBundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CFBundle.cpp; sourceTree = "<group>"; }; 2695DD920D3EBFF6007E4CA2 /* CFBundle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CFBundle.h; sourceTree = "<group>"; }; 2695DD9A0D3EC160007E4CA2 /* CFString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CFString.h; sourceTree = "<group>"; }; @@ -151,7 +148,6 @@ 26C637FD0C71334A0024798E /* PThreadCondition.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PThreadCondition.h; sourceTree = "<group>"; }; 26C637FE0C71334A0024798E /* PThreadEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PThreadEvent.cpp; sourceTree = "<group>"; }; 26C637FF0C71334A0024798E /* PThreadEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PThreadEvent.h; sourceTree = "<group>"; }; - 26C638000C71334A0024798E /* PThreadMutex.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PThreadMutex.h; sourceTree = "<group>"; }; 26C638010C71334A0024798E /* SysSignal.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SysSignal.cpp; sourceTree = "<group>"; }; 26C638020C71334A0024798E /* SysSignal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SysSignal.h; sourceTree = "<group>"; }; 26C638050C71334A0024798E /* TTYState.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TTYState.cpp; sourceTree = "<group>"; }; @@ -284,8 +280,6 @@ 26C637FD0C71334A0024798E /* PThreadCondition.h */, 26C637FF0C71334A0024798E /* PThreadEvent.h */, 26C637FE0C71334A0024798E /* PThreadEvent.cpp */, - 26C638000C71334A0024798E /* PThreadMutex.h */, - 2672DBEE0EEF446700E92059 /* PThreadMutex.cpp */, 233B4EA81D2DB96A00E98261 /* StringConvert.cpp */, 26C638020C71334A0024798E /* SysSignal.h */, 26C638010C71334A0024798E /* SysSignal.cpp */, @@ -486,7 +480,6 @@ 26CE05BA115C363E0022F371 /* DNBLog.cpp in Sources */, 26CE05BB115C363F0022F371 /* DNBRegisterInfo.cpp in Sources */, 26CE05BC115C36420022F371 /* PThreadEvent.cpp in Sources */, - 26CE05BD115C36430022F371 /* PThreadMutex.cpp in Sources */, 26CE05BE115C36440022F371 /* SysSignal.cpp in Sources */, 26CE05BF115C364D0022F371 /* DNBArchImplX86_64.cpp in Sources */, 26CE05C5115C36590022F371 /* CFBundle.cpp in Sources */, @@ -525,7 +518,6 @@ 456F67591AD46CE9002850C2 /* DNBLog.cpp in Sources */, 456F675A1AD46CE9002850C2 /* DNBRegisterInfo.cpp in Sources */, 456F675B1AD46CE9002850C2 /* PThreadEvent.cpp in Sources */, - 456F675C1AD46CE9002850C2 /* PThreadMutex.cpp in Sources */, 456F675D1AD46CE9002850C2 /* SysSignal.cpp in Sources */, 456F675E1AD46CE9002850C2 /* DNBArchImplX86_64.cpp in Sources */, 23043C9E1D35DBFA00FC25CA /* StringConvert.cpp in Sources */, diff --git a/lldb/tools/debugserver/source/CMakeLists.txt b/lldb/tools/debugserver/source/CMakeLists.txt index 1a433898f6aa4..f7ff76c3e8e84 100644 --- a/lldb/tools/debugserver/source/CMakeLists.txt +++ b/lldb/tools/debugserver/source/CMakeLists.txt @@ -203,7 +203,6 @@ set(lldbDebugserverCommonSources libdebugserver.cpp PseudoTerminal.cpp PThreadEvent.cpp - PThreadMutex.cpp RNBContext.cpp RNBRemote.cpp RNBServices.cpp diff --git a/lldb/tools/debugserver/source/DNB.cpp b/lldb/tools/debugserver/source/DNB.cpp index 10c55dc3f769f..b1389ab8f8066 100644 --- a/lldb/tools/debugserver/source/DNB.cpp +++ b/lldb/tools/debugserver/source/DNB.cpp @@ -69,8 +69,8 @@ static ProcessMap *GetProcessMap(bool can_create) { static ProcessMap *g_process_map_ptr = NULL; if (can_create && g_process_map_ptr == NULL) { - static pthread_mutex_t g_process_map_mutex = PTHREAD_MUTEX_INITIALIZER; - PTHREAD_MUTEX_LOCKER(locker, &g_process_map_mutex); + static std::mutex g_process_map_mutex; + std::lock_guard<std::mutex> guard(g_process_map_mutex); if (g_process_map_ptr == NULL) g_process_map_ptr = new ProcessMap; } diff --git a/lldb/tools/debugserver/source/DNBError.cpp b/lldb/tools/debugserver/source/DNBError.cpp index 00933bce1a770..17690428341bf 100644 --- a/lldb/tools/debugserver/source/DNBError.cpp +++ b/lldb/tools/debugserver/source/DNBError.cpp @@ -13,7 +13,6 @@ #include "DNBError.h" #include "CFString.h" #include "DNBLog.h" -#include "PThreadMutex.h" #ifdef WITH_SPRINGBOARD #include <SpringBoardServices/SpringBoardServer.h> diff --git a/lldb/tools/debugserver/source/MacOSX/MachException.cpp b/lldb/tools/debugserver/source/MacOSX/MachException.cpp index 40450c2c9d1ff..618fce370d9eb 100644 --- a/lldb/tools/debugserver/source/MacOSX/MachException.cpp +++ b/lldb/tools/debugserver/source/MacOSX/MachException.cpp @@ -15,7 +15,6 @@ #include "DNBError.h" #include "DNBLog.h" #include "MachProcess.h" -#include "PThreadMutex.h" #include "SysSignal.h" #include <cerrno> #include <inttypes.h> diff --git a/lldb/tools/debugserver/source/MacOSX/MachException.h b/lldb/tools/debugserver/source/MacOSX/MachException.h index 573e84e991608..2da389c50be61 100644 --- a/lldb/tools/debugserver/source/MacOSX/MachException.h +++ b/lldb/tools/debugserver/source/MacOSX/MachException.h @@ -17,7 +17,6 @@ #include <vector> class MachProcess; -class PThreadMutex; typedef union MachMessageTag { mach_msg_header_t hdr; diff --git a/lldb/tools/debugserver/source/MacOSX/MachTask.h b/lldb/tools/debugserver/source/MacOSX/MachTask.h index 286a57b9e0dd1..2284f6b99de91 100644 --- a/lldb/tools/debugserver/source/MacOSX/MachTask.h +++ b/lldb/tools/debugserver/source/MacOSX/MachTask.h @@ -16,15 +16,14 @@ #ifndef LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_MACHTASK_H #define LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_MACHTASK_H -#include <mach/mach.h> -#include <sys/socket.h> -#include <map> -#include <string> #include "DNBDefs.h" -#include "RNBContext.h" #include "MachException.h" #include "MachVMMemory.h" -#include "PThreadMutex.h" +#include "RNBContext.h" +#include <mach/mach.h> +#include <map> +#include <string> +#include <sys/socket.h> class MachProcess; diff --git a/lldb/tools/debugserver/source/PThreadMutex.cpp b/lldb/tools/debugserver/source/PThreadMutex.cpp deleted file mode 100644 index 118921aee5a81..0000000000000 --- a/lldb/tools/debugserver/source/PThreadMutex.cpp +++ /dev/null @@ -1,66 +0,0 @@ -//===-- PThreadMutex.cpp ----------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// Created by Greg Clayton on 12/9/08. -// -//===----------------------------------------------------------------------===// - -#include "PThreadMutex.h" - -#include "DNBTimer.h" - -#if defined(DEBUG_PTHREAD_MUTEX_DEADLOCKS) - -PThreadMutex::Locker::Locker(PThreadMutex &m, const char *function, - const char *file, const int line) - : m_pMutex(m.Mutex()), m_function(function), m_file(file), m_line(line), - m_lock_time(0) { - Lock(); -} - -PThreadMutex::Locker::Locker(PThreadMutex *m, const char *function, - const char *file, const int line) - : m_pMutex(m ? m->Mutex() : NULL), m_function(function), m_file(file), - m_line(line), m_lock_time(0) { - Lock(); -} - -PThreadMutex::Locker::Locker(pthread_mutex_t *mutex, const char *function, - const char *file, const int line) - : m_pMutex(mutex), m_function(function), m_file(file), m_line(line), - m_lock_time(0) { - Lock(); -} - -PThreadMutex::Locker::~Locker() { Unlock(); } - -void PThreadMutex::Locker::Lock() { - if (m_pMutex) { - m_lock_time = DNBTimer::GetTimeOfDay(); - if (::pthread_mutex_trylock(m_pMutex) != 0) { - fprintf(stdout, "::pthread_mutex_trylock (%8.8p) mutex is locked " - "(function %s in %s:%i), waiting...\n", - m_pMutex, m_function, m_file, m_line); - ::pthread_mutex_lock(m_pMutex); - fprintf(stdout, "::pthread_mutex_lock (%8.8p) succeeded after %6llu " - "usecs (function %s in %s:%i)\n", - m_pMutex, DNBTimer::GetTimeOfDay() - m_lock_time, m_function, - m_file, m_line); - } - } -} - -void PThreadMutex::Locker::Unlock() { - fprintf(stdout, "::pthread_mutex_unlock (%8.8p) had lock for %6llu usecs in " - "%s in %s:%i\n", - m_pMutex, DNBTimer::GetTimeOfDay() - m_lock_time, m_function, m_file, - m_line); - ::pthread_mutex_unlock(m_pMutex); -} - -#endif diff --git a/lldb/tools/debugserver/source/PThreadMutex.h b/lldb/tools/debugserver/source/PThreadMutex.h deleted file mode 100644 index 17f9fdff5f2d3..0000000000000 --- a/lldb/tools/debugserver/source/PThreadMutex.h +++ /dev/null @@ -1,119 +0,0 @@ -//===-- PThreadMutex.h ------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// Created by Greg Clayton on 6/16/07. -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_TOOLS_DEBUGSERVER_SOURCE_PTHREADMUTEX_H -#define LLDB_TOOLS_DEBUGSERVER_SOURCE_PTHREADMUTEX_H - -#include <cassert> -#include <cstdint> -#include <pthread.h> - -//#define DEBUG_PTHREAD_MUTEX_DEADLOCKS 1 - -#if defined(DEBUG_PTHREAD_MUTEX_DEADLOCKS) -#define PTHREAD_MUTEX_LOCKER(var, mutex) \ - PThreadMutex::Locker var(mutex, __FUNCTION__, __FILE__, __LINE__) - -#else -#define PTHREAD_MUTEX_LOCKER(var, mutex) PThreadMutex::Locker var(mutex) -#endif - -class PThreadMutex { -public: - class Locker { - public: -#if defined(DEBUG_PTHREAD_MUTEX_DEADLOCKS) - - Locker(PThreadMutex &m, const char *function, const char *file, int line); - Locker(PThreadMutex *m, const char *function, const char *file, int line); - Locker(pthread_mutex_t *mutex, const char *function, const char *file, - int line); - ~Locker(); - void Lock(); - void Unlock(); - -#else - Locker(PThreadMutex &m) : m_pMutex(m.Mutex()) { Lock(); } - - Locker(PThreadMutex *m) : m_pMutex(m ? m->Mutex() : NULL) { Lock(); } - - Locker(pthread_mutex_t *mutex) : m_pMutex(mutex) { Lock(); } - - void Lock() { - if (m_pMutex) - ::pthread_mutex_lock(m_pMutex); - } - - void Unlock() { - if (m_pMutex) - ::pthread_mutex_unlock(m_pMutex); - } - - ~Locker() { Unlock(); } - -#endif - - // unlock any the current mutex and lock the new one if it is valid - void Reset(pthread_mutex_t *pMutex = NULL) { - Unlock(); - m_pMutex = pMutex; - Lock(); - } - pthread_mutex_t *m_pMutex; -#if defined(DEBUG_PTHREAD_MUTEX_DEADLOCKS) - const char *m_function; - const char *m_file; - int m_line; - uint64_t m_lock_time; -#endif - }; - - PThreadMutex() { - [[maybe_unused]] int err; - err = ::pthread_mutex_init(&m_mutex, NULL); - assert(err == 0); - } - - PThreadMutex(int type) { - [[maybe_unused]] int err; - ::pthread_mutexattr_t attr; - err = ::pthread_mutexattr_init(&attr); - assert(err == 0); - err = ::pthread_mutexattr_settype(&attr, type); - assert(err == 0); - err = ::pthread_mutex_init(&m_mutex, &attr); - assert(err == 0); - err = ::pthread_mutexattr_destroy(&attr); - assert(err == 0); - } - - ~PThreadMutex() { - [[maybe_unused]] int err; - err = ::pthread_mutex_destroy(&m_mutex); - if (err != 0) { - err = Unlock(); - if (err == 0) - ::pthread_mutex_destroy(&m_mutex); - } - } - - pthread_mutex_t *Mutex() { return &m_mutex; } - - int Lock() { return ::pthread_mutex_lock(&m_mutex); } - - int Unlock() { return ::pthread_mutex_unlock(&m_mutex); } - -protected: - pthread_mutex_t m_mutex; -}; - -#endif _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits