[Lldb-commits] [lldb] r154458 - in /lldb/trunk: include/lldb/Host/ source/API/ source/Breakpoint/ source/Commands/ source/Core/ source/Host/common/ source/Plugins/Process/MacOSX-Kernel/ source/Plugins/Process/gdb-remote/
Greg Clayton
gclayton at apple.com
Tue Apr 10 17:24:50 PDT 2012
Author: gclayton
Date: Tue Apr 10 19:24:49 2012
New Revision: 154458
URL: http://llvm.org/viewvc/llvm-project?rev=154458&view=rev
Log:
No functionality changes, mostly cleanup.
Cleaned up the Mutex::Locker and the ReadWriteLock classes a bit.
Also cleaned up the GDBRemoteCommunication class to not have so many packet functions. Used the "NoLock" versions of send/receive packet functions when possible for a bit of performance.
Modified:
lldb/trunk/include/lldb/Host/Mutex.h
lldb/trunk/include/lldb/Host/ReadWriteLock.h
lldb/trunk/source/API/SBCommandInterpreter.cpp
lldb/trunk/source/API/SBDebugger.cpp
lldb/trunk/source/API/SBFunction.cpp
lldb/trunk/source/API/SBInstruction.cpp
lldb/trunk/source/API/SBSymbol.cpp
lldb/trunk/source/Breakpoint/BreakpointList.cpp
lldb/trunk/source/Breakpoint/WatchpointList.cpp
lldb/trunk/source/Commands/CommandObjectTarget.cpp
lldb/trunk/source/Core/Listener.cpp
lldb/trunk/source/Core/ModuleList.cpp
lldb/trunk/source/Host/common/Mutex.cpp
lldb/trunk/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp
lldb/trunk/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp
lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp
lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
Modified: lldb/trunk/include/lldb/Host/Mutex.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/Mutex.h?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Host/Mutex.h (original)
+++ lldb/trunk/include/lldb/Host/Mutex.h Tue Apr 10 19:24:49 2012
@@ -105,7 +105,7 @@
/// non-NULL.
//--------------------------------------------------------------
void
- Reset(pthread_mutex_t *mutex = NULL);
+ Lock (pthread_mutex_t *mutex);
//--------------------------------------------------------------
/// Change the contained mutex only if the mutex can be locked.
@@ -125,6 +125,9 @@
bool
TryLock (pthread_mutex_t *mutex);
+ void
+ Unlock ();
+
protected:
//--------------------------------------------------------------
/// Member variables
Modified: lldb/trunk/include/lldb/Host/ReadWriteLock.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/ReadWriteLock.h?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Host/ReadWriteLock.h (original)
+++ lldb/trunk/include/lldb/Host/ReadWriteLock.h Tue Apr 10 19:24:49 2012
@@ -91,6 +91,13 @@
{
}
+ ReadLocker (ReadWriteLock &lock) :
+ m_lock (NULL)
+ {
+ Lock(&lock);
+ }
+
+
ReadLocker (ReadWriteLock *lock) :
m_lock (NULL)
{
@@ -164,11 +171,17 @@
m_lock (NULL)
{
}
-
+
+ WriteLocker (ReadWriteLock &lock) :
+ m_lock (NULL)
+ {
+ Lock(&lock);
+ }
+
WriteLocker (ReadWriteLock *lock) :
- m_lock (lock)
+ m_lock (NULL)
{
- Lock();
+ Lock(lock);
}
~WriteLocker()
@@ -177,17 +190,30 @@
}
void
- Lock ()
+ Lock (ReadWriteLock *lock)
{
if (m_lock)
- m_lock->WriteLock();
+ {
+ if (m_lock == lock)
+ return; // We already have this lock locked
+ else
+ Unlock();
+ }
+ if (lock)
+ {
+ lock->WriteLock();
+ m_lock = lock;
+ }
}
void
Unlock ()
{
if (m_lock)
+ {
m_lock->WriteUnlock();
+ m_lock = NULL;
+ }
}
protected:
Modified: lldb/trunk/source/API/SBCommandInterpreter.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBCommandInterpreter.cpp?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/API/SBCommandInterpreter.cpp (original)
+++ lldb/trunk/source/API/SBCommandInterpreter.cpp Tue Apr 10 19:24:49 2012
@@ -93,7 +93,7 @@
TargetSP target_sp(m_opaque_ptr->GetDebugger().GetSelectedTarget());
Mutex::Locker api_locker;
if (target_sp)
- api_locker.Reset(target_sp->GetAPIMutex().GetMutex());
+ api_locker.Lock(target_sp->GetAPIMutex().GetMutex());
m_opaque_ptr->HandleCommand (command_line, add_to_history, result.ref());
}
else
@@ -238,7 +238,7 @@
TargetSP target_sp(m_opaque_ptr->GetDebugger().GetSelectedTarget());
Mutex::Locker api_locker;
if (target_sp)
- api_locker.Reset(target_sp->GetAPIMutex().GetMutex());
+ api_locker.Lock(target_sp->GetAPIMutex().GetMutex());
m_opaque_ptr->SourceInitFile (false, result.ref());
}
else
@@ -263,7 +263,7 @@
TargetSP target_sp(m_opaque_ptr->GetDebugger().GetSelectedTarget());
Mutex::Locker api_locker;
if (target_sp)
- api_locker.Reset(target_sp->GetAPIMutex().GetMutex());
+ api_locker.Lock(target_sp->GetAPIMutex().GetMutex());
m_opaque_ptr->SourceInitFile (true, result.ref());
}
else
Modified: lldb/trunk/source/API/SBDebugger.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBDebugger.cpp?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/API/SBDebugger.cpp (original)
+++ lldb/trunk/source/API/SBDebugger.cpp Tue Apr 10 19:24:49 2012
@@ -308,7 +308,7 @@
TargetSP target_sp (m_opaque_sp->GetSelectedTarget());
Mutex::Locker api_locker;
if (target_sp)
- api_locker.Reset(target_sp->GetAPIMutex().GetMutex());
+ api_locker.Lock(target_sp->GetAPIMutex().GetMutex());
SBCommandInterpreter sb_interpreter(GetCommandInterpreter ());
SBCommandReturnObject result;
@@ -830,7 +830,7 @@
TargetSP target_sp (m_opaque_sp->GetSelectedTarget());
Mutex::Locker api_locker;
if (target_sp)
- api_locker.Reset(target_sp->GetAPIMutex().GetMutex());
+ api_locker.Lock(target_sp->GetAPIMutex().GetMutex());
InputReaderSP reader_sp(*reader);
m_opaque_sp->PushInputReader (reader_sp);
}
Modified: lldb/trunk/source/API/SBFunction.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBFunction.cpp?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/API/SBFunction.cpp (original)
+++ lldb/trunk/source/API/SBFunction.cpp Tue Apr 10 19:24:49 2012
@@ -130,7 +130,7 @@
TargetSP target_sp (target.GetSP());
if (target_sp)
{
- api_locker.Reset (target_sp->GetAPIMutex().GetMutex());
+ api_locker.Lock (target_sp->GetAPIMutex().GetMutex());
target_sp->CalculateExecutionContext (exe_ctx);
exe_ctx.SetProcessSP(target_sp->GetProcessSP());
}
Modified: lldb/trunk/source/API/SBInstruction.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBInstruction.cpp?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/API/SBInstruction.cpp (original)
+++ lldb/trunk/source/API/SBInstruction.cpp Tue Apr 10 19:24:49 2012
@@ -78,7 +78,7 @@
TargetSP target_sp (target.GetSP());
if (target_sp)
{
- api_locker.Reset (target_sp->GetAPIMutex().GetMutex());
+ api_locker.Lock (target_sp->GetAPIMutex().GetMutex());
target_sp->CalculateExecutionContext (exe_ctx);
exe_ctx.SetProcessSP(target_sp->GetProcessSP());
}
@@ -97,7 +97,7 @@
TargetSP target_sp (target.GetSP());
if (target_sp)
{
- api_locker.Reset (target_sp->GetAPIMutex().GetMutex());
+ api_locker.Lock (target_sp->GetAPIMutex().GetMutex());
target_sp->CalculateExecutionContext (exe_ctx);
exe_ctx.SetProcessSP(target_sp->GetProcessSP());
}
@@ -116,7 +116,7 @@
TargetSP target_sp (target.GetSP());
if (target_sp)
{
- api_locker.Reset (target_sp->GetAPIMutex().GetMutex());
+ api_locker.Lock (target_sp->GetAPIMutex().GetMutex());
target_sp->CalculateExecutionContext (exe_ctx);
exe_ctx.SetProcessSP(target_sp->GetProcessSP());
}
Modified: lldb/trunk/source/API/SBSymbol.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBSymbol.cpp?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/API/SBSymbol.cpp (original)
+++ lldb/trunk/source/API/SBSymbol.cpp Tue Apr 10 19:24:49 2012
@@ -126,7 +126,7 @@
TargetSP target_sp (target.GetSP());
if (target_sp)
{
- api_locker.Reset (target_sp->GetAPIMutex().GetMutex());
+ api_locker.Lock (target_sp->GetAPIMutex().GetMutex());
target_sp->CalculateExecutionContext (exe_ctx);
}
if (m_opaque_ptr->ValueIsAddress())
Modified: lldb/trunk/source/Breakpoint/BreakpointList.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Breakpoint/BreakpointList.cpp?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/Breakpoint/BreakpointList.cpp (original)
+++ lldb/trunk/source/Breakpoint/BreakpointList.cpp Tue Apr 10 19:24:49 2012
@@ -223,5 +223,5 @@
void
BreakpointList::GetListMutex (Mutex::Locker &locker)
{
- return locker.Reset (m_mutex.GetMutex());
+ return locker.Lock (m_mutex.GetMutex());
}
Modified: lldb/trunk/source/Breakpoint/WatchpointList.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Breakpoint/WatchpointList.cpp?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/Breakpoint/WatchpointList.cpp (original)
+++ lldb/trunk/source/Breakpoint/WatchpointList.cpp Tue Apr 10 19:24:49 2012
@@ -273,5 +273,5 @@
void
WatchpointList::GetListMutex (Mutex::Locker &locker)
{
- return locker.Reset (m_mutex.GetMutex());
+ return locker.Lock (m_mutex.GetMutex());
}
Modified: lldb/trunk/source/Commands/CommandObjectTarget.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectTarget.cpp?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/Commands/CommandObjectTarget.cpp (original)
+++ lldb/trunk/source/Commands/CommandObjectTarget.cpp Tue Apr 10 19:24:49 2012
@@ -2839,7 +2839,7 @@
if (use_global_module_list)
{
- locker.Reset (Module::GetAllocationModuleCollectionMutex()->GetMutex());
+ locker.Lock (Module::GetAllocationModuleCollectionMutex()->GetMutex());
num_modules = Module::GetNumberAllocatedModules();
}
else
Modified: lldb/trunk/source/Core/Listener.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Listener.cpp?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/Core/Listener.cpp (original)
+++ lldb/trunk/source/Core/Listener.cpp Tue Apr 10 19:24:49 2012
@@ -303,7 +303,7 @@
// Unlock the event queue here. We've removed this event and are about to return
// it so it should be okay to get the next event off the queue here - and it might
// be useful to do that in the "DoOnRemoval".
- lock.Reset();
+ lock.Unlock();
event_sp->DoOnRemoval();
return true;
}
Modified: lldb/trunk/source/Core/ModuleList.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ModuleList.cpp?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/Core/ModuleList.cpp (original)
+++ lldb/trunk/source/Core/ModuleList.cpp Tue Apr 10 19:24:49 2012
@@ -118,7 +118,7 @@
if (mandatory)
{
- locker.Reset (m_modules_mutex.GetMutex());
+ locker.Lock (m_modules_mutex.GetMutex());
}
else
{
Modified: lldb/trunk/source/Host/common/Mutex.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/Mutex.cpp?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/Host/common/Mutex.cpp (original)
+++ lldb/trunk/source/Host/common/Mutex.cpp Tue Apr 10 19:24:49 2012
@@ -50,10 +50,9 @@
// mutex owned by "m" and locks it.
//----------------------------------------------------------------------
Mutex::Locker::Locker (Mutex& m) :
- m_mutex_ptr(m.GetMutex())
+ m_mutex_ptr(NULL)
{
- if (m_mutex_ptr)
- Mutex::Lock (m_mutex_ptr);
+ Lock (m.GetMutex());
}
//----------------------------------------------------------------------
@@ -63,10 +62,10 @@
// mutex owned by "m" and locks it.
//----------------------------------------------------------------------
Mutex::Locker::Locker (Mutex* m) :
- m_mutex_ptr(m ? m->GetMutex() : NULL)
+ m_mutex_ptr(NULL)
{
- if (m_mutex_ptr)
- Mutex::Lock (m_mutex_ptr);
+ if (m)
+ Lock (m->GetMutex());
}
//----------------------------------------------------------------------
@@ -75,10 +74,10 @@
// This will create a scoped mutex locking object that locks "mutex"
//----------------------------------------------------------------------
Mutex::Locker::Locker (pthread_mutex_t *mutex_ptr) :
- m_mutex_ptr(mutex_ptr)
+ m_mutex_ptr (NULL)
{
if (m_mutex_ptr)
- Mutex::Lock (m_mutex_ptr);
+ Lock (m_mutex_ptr);
}
//----------------------------------------------------------------------
@@ -88,7 +87,7 @@
//----------------------------------------------------------------------
Mutex::Locker::~Locker ()
{
- Reset();
+ Unlock();
}
//----------------------------------------------------------------------
@@ -96,18 +95,29 @@
// mutex) and lock the new "mutex" object if it is non-NULL.
//----------------------------------------------------------------------
void
-Mutex::Locker::Reset (pthread_mutex_t *mutex_ptr)
+Mutex::Locker::Lock (pthread_mutex_t *mutex_ptr)
{
// We already have this mutex locked or both are NULL...
if (m_mutex_ptr == mutex_ptr)
return;
- if (m_mutex_ptr)
- Mutex::Unlock (m_mutex_ptr);
+ Unlock ();
- m_mutex_ptr = mutex_ptr;
- if (m_mutex_ptr)
+ if (mutex_ptr)
+ {
+ m_mutex_ptr = mutex_ptr;
Mutex::Lock (m_mutex_ptr);
+ }
+}
+
+void
+Mutex::Locker::Unlock ()
+{
+ if (m_mutex_ptr)
+ {
+ Mutex::Unlock (m_mutex_ptr);
+ m_mutex_ptr = NULL;
+ }
}
bool
@@ -115,9 +125,9 @@
{
// We already have this mutex locked!
if (m_mutex_ptr == mutex_ptr)
- return true;
+ return m_mutex_ptr != NULL;
- Reset ();
+ Unlock ();
if (mutex_ptr)
{
Modified: lldb/trunk/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp (original)
+++ lldb/trunk/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp Tue Apr 10 19:24:49 2012
@@ -151,7 +151,7 @@
}
bool
-CommunicationKDP::TryLockSequenceMutex (Mutex::Locker& locker)
+CommunicationKDP::GetSequenceMutex (Mutex::Locker& locker)
{
return locker.TryLock (m_sequence_mutex.GetMutex());
}
Modified: lldb/trunk/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h (original)
+++ lldb/trunk/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h Tue Apr 10 19:24:49 2012
@@ -102,7 +102,7 @@
uint32_t usec);
bool
- TryLockSequenceMutex(lldb_private::Mutex::Locker& locker);
+ GetSequenceMutex(lldb_private::Mutex::Locker& locker);
bool
CheckForPacket (const uint8_t *src,
Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp (original)
+++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp Tue Apr 10 19:24:49 2012
@@ -158,21 +158,6 @@
}
size_t
-GDBRemoteCommunication::SendPacket (lldb_private::StreamString &payload)
-{
- Mutex::Locker locker(m_sequence_mutex);
- const std::string &p (payload.GetString());
- return SendPacketNoLock (p.c_str(), p.size());
-}
-
-size_t
-GDBRemoteCommunication::SendPacket (const char *payload)
-{
- Mutex::Locker locker(m_sequence_mutex);
- return SendPacketNoLock (payload, ::strlen (payload));
-}
-
-size_t
GDBRemoteCommunication::SendPacket (const char *payload, size_t payload_length)
{
Mutex::Locker locker(m_sequence_mutex);
@@ -234,15 +219,20 @@
GDBRemoteCommunication::GetAck ()
{
StringExtractorGDBRemote packet;
- if (WaitForPacketWithTimeoutMicroSeconds (packet, GetPacketTimeoutInMicroSeconds ()) == 1)
+ if (WaitForPacketWithTimeoutMicroSecondsNoLock (packet, GetPacketTimeoutInMicroSeconds ()) == 1)
return packet.GetChar();
return 0;
}
bool
-GDBRemoteCommunication::TryLockSequenceMutex (Mutex::Locker& locker)
+GDBRemoteCommunication::GetSequenceMutex (Mutex::Locker& locker, uint32_t usec_timeout)
{
- return locker.TryLock (m_sequence_mutex.GetMutex());
+ if (usec_timeout == 0)
+ return locker.TryLock (m_sequence_mutex.GetMutex());
+
+ // Wait for the lock
+ locker.Lock (m_sequence_mutex.GetMutex());
+ return true;
}
@@ -253,13 +243,6 @@
}
size_t
-GDBRemoteCommunication::WaitForPacketWithTimeoutMicroSeconds (StringExtractorGDBRemote &packet, uint32_t timeout_usec)
-{
- Mutex::Locker locker(m_sequence_mutex);
- return WaitForPacketWithTimeoutMicroSecondsNoLock (packet, timeout_usec);
-}
-
-size_t
GDBRemoteCommunication::WaitForPacketWithTimeoutMicroSecondsNoLock (StringExtractorGDBRemote &packet, uint32_t timeout_usec)
{
uint8_t buffer[8192];
Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h (original)
+++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h Tue Apr 10 19:24:49 2012
@@ -45,21 +45,6 @@
virtual
~GDBRemoteCommunication();
- size_t
- SendPacket (const char *payload);
-
- size_t
- SendPacket (const char *payload,
- size_t payload_length);
-
- size_t
- SendPacket (lldb_private::StreamString &response);
-
- // Wait for a packet within 'nsec' seconds
- size_t
- WaitForPacketWithTimeoutMicroSeconds (StringExtractorGDBRemote &response,
- uint32_t usec);
-
char
GetAck ();
@@ -74,7 +59,7 @@
size_t payload_length);
bool
- TryLockSequenceMutex(lldb_private::Mutex::Locker& locker);
+ GetSequenceMutex (lldb_private::Mutex::Locker& locker, uint32_t usec_timeout);
bool
CheckForPacket (const uint8_t *src,
@@ -260,6 +245,10 @@
};
size_t
+ SendPacket (const char *payload,
+ size_t payload_length);
+
+ size_t
SendPacketNoLock (const char *payload,
size_t payload_length);
Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp (original)
+++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp Tue Apr 10 19:24:49 2012
@@ -259,7 +259,7 @@
Mutex::Locker locker;
LogSP log (ProcessGDBRemoteLog::GetLogIfAllCategoriesSet (GDBR_LOG_PROCESS));
size_t response_len = 0;
- if (TryLockSequenceMutex (locker))
+ if (GetSequenceMutex (locker, 0))
{
if (SendPacketNoLock (payload, payload_length))
response_len = WaitForPacketWithTimeoutMicroSecondsNoLock (response, GetPacketTimeoutInMicroSeconds ());
@@ -361,30 +361,6 @@
return response_len;
}
-//template<typename _Tp>
-//class ScopedValueChanger
-//{
-//public:
-// // Take a value reference and the value to assign it to when this class
-// // instance goes out of scope.
-// ScopedValueChanger (_Tp &value_ref, _Tp value) :
-// m_value_ref (value_ref),
-// m_value (value)
-// {
-// }
-//
-// // This object is going out of scope, change the value pointed to by
-// // m_value_ref to the value we got during construction which was stored in
-// // m_value;
-// ~ScopedValueChanger ()
-// {
-// m_value_ref = m_value;
-// }
-//protected:
-// _Tp &m_value_ref; // A reference to the value we will change when this object destructs
-// _Tp m_value; // The value to assign to m_value_ref when this goes out of scope.
-//};
-
StateType
GDBRemoteCommunicationClient::SendContinuePacketAndWaitForResponse
(
@@ -415,7 +391,7 @@
{
if (log)
log->Printf ("GDBRemoteCommunicationClient::%s () sending continue packet: %s", __FUNCTION__, continue_packet.c_str());
- if (SendPacket(continue_packet.c_str(), continue_packet.size()) == 0)
+ if (SendPacketNoLock(continue_packet.c_str(), continue_packet.size()) == 0)
state = eStateInvalid;
m_private_is_running.SetValue (true, eBroadcastAlways);
@@ -426,7 +402,7 @@
if (log)
log->Printf ("GDBRemoteCommunicationClient::%s () WaitForPacket(%s)", __FUNCTION__, continue_packet.c_str());
- if (WaitForPacketWithTimeoutMicroSeconds (response, UINT32_MAX))
+ if (WaitForPacketWithTimeoutMicroSecondsNoLock(response, UINT32_MAX))
{
if (response.Empty())
state = eStateInvalid;
@@ -647,7 +623,7 @@
return false;
}
-// This function takes a mutex locker as a parameter in case the TryLockSequenceMutex
+// This function takes a mutex locker as a parameter in case the GetSequenceMutex
// actually succeeds. If it doesn't succeed in acquiring the sequence mutex
// (the expected result), then it will send the halt packet. If it does succeed
// then the caller that requested the interrupt will want to keep the sequence
@@ -672,7 +648,12 @@
if (IsRunning())
{
// Only send an interrupt if our debugserver is running...
- if (TryLockSequenceMutex (locker) == false)
+ if (GetSequenceMutex (locker, 0))
+ {
+ if (log)
+ log->Printf ("SendInterrupt () - got sequence mutex without having to interrupt");
+ }
+ else
{
// Someone has the mutex locked waiting for a response or for the
// inferior to stop, so send the interrupt on the down low...
@@ -718,11 +699,6 @@
}
return false;
}
- else
- {
- if (log)
- log->Printf ("SendInterrupt () - got sequence mutex without having to interrupt");
- }
}
else
{
@@ -1174,6 +1150,12 @@
return false;
}
+bool
+GDBRemoteCommunicationClient::Detach ()
+{
+ return SendPacket ("D", 1) > 0;
+}
+
Error
GDBRemoteCommunicationClient::GetMemoryRegionInfo (lldb::addr_t addr,
lldb_private::MemoryRegionInfo ®ion_info)
@@ -1861,7 +1843,7 @@
Mutex::Locker locker;
thread_ids.clear();
- if (TryLockSequenceMutex (locker))
+ if (GetSequenceMutex (locker, 0))
{
sequence_mutex_unavailable = false;
StringExtractorGDBRemote response;
@@ -1894,3 +1876,19 @@
}
return thread_ids.size();
}
+
+lldb::addr_t
+GDBRemoteCommunicationClient::GetShlibInfoAddr()
+{
+ if (!IsRunning())
+ {
+ StringExtractorGDBRemote response;
+ if (SendPacketAndWaitForResponse("qShlibInfoAddr", ::strlen ("qShlibInfoAddr"), response, false))
+ {
+ if (response.IsNormalResponse())
+ return response.GetHexMaxU64(false, LLDB_INVALID_ADDRESS);
+ }
+ }
+ return LLDB_INVALID_ADDRESS;
+}
+
Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h (original)
+++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h Tue Apr 10 19:24:49 2012
@@ -199,6 +199,9 @@
bool
DeallocateMemory (lldb::addr_t addr);
+ bool
+ Detach ();
+
lldb_private::Error
GetMemoryRegionInfo (lldb::addr_t addr,
lldb_private::MemoryRegionInfo &range_info);
@@ -232,6 +235,9 @@
bool
GetHostname (std::string &s);
+ lldb::addr_t
+ GetShlibInfoAddr();
+
bool
GetSupportsThreadSuffix ();
Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp (original)
+++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp Tue Apr 10 19:24:49 2012
@@ -85,7 +85,7 @@
bool &quit)
{
StringExtractorGDBRemote packet;
- if (WaitForPacketWithTimeoutMicroSeconds(packet, timeout_usec))
+ if (WaitForPacketWithTimeoutMicroSecondsNoLock (packet, timeout_usec))
{
const StringExtractorGDBRemote::ServerPacketType packet_type = packet.GetServerPacketType ();
switch (packet_type)
@@ -178,7 +178,7 @@
GDBRemoteCommunicationServer::SendUnimplementedResponse (const char *)
{
// TODO: Log the packet we aren't handling...
- return SendPacket ("");
+ return SendPacketNoLock ("", 0);
}
size_t
@@ -187,14 +187,14 @@
char packet[16];
int packet_len = ::snprintf (packet, sizeof(packet), "E%2.2x", err);
assert (packet_len < sizeof(packet));
- return SendPacket (packet, packet_len);
+ return SendPacketNoLock (packet, packet_len);
}
size_t
GDBRemoteCommunicationServer::SendOKResponse ()
{
- return SendPacket ("OK");
+ return SendPacketNoLock ("OK", 2);
}
bool
@@ -269,7 +269,7 @@
response.PutChar(';');
}
- return SendPacket (response) > 0;
+ return SendPacketNoLock (response.GetData(), response.GetSize()) > 0;
}
static void
@@ -308,7 +308,7 @@
{
StreamString response;
CreateProcessInfoResponse (proc_info, response);
- return SendPacket (response);
+ return SendPacketNoLock (response.GetData(), response.GetSize());
}
}
return SendErrorResponse (1);
@@ -423,7 +423,7 @@
StreamString response;
CreateProcessInfoResponse (m_proc_infos.GetProcessInfoAtIndex(m_proc_infos_index), response);
++m_proc_infos_index;
- return SendPacket (response);
+ return SendPacketNoLock (response.GetData(), response.GetSize());
}
return SendErrorResponse (4);
}
@@ -441,7 +441,7 @@
{
StreamString response;
response.PutCStringAsRawHex8 (name.c_str());
- return SendPacket (response);
+ return SendPacketNoLock (response.GetData(), response.GetSize());
}
}
return SendErrorResponse (5);
@@ -461,7 +461,7 @@
{
StreamString response;
response.PutCStringAsRawHex8 (name.c_str());
- return SendPacket (response);
+ return SendPacketNoLock (response.GetData(), response.GetSize());
}
}
return SendErrorResponse (6);
@@ -498,7 +498,7 @@
bytes_left = 0;
}
}
- return SendPacket (response);
+ return SendPacketNoLock (response.GetData(), response.GetSize());
}
}
return SendErrorResponse (7);
@@ -657,7 +657,7 @@
m_process_launch_info.Clear();
}
}
- return SendPacket (response);
+ return SendPacketNoLock (response.GetData(), response.GetSize());
}
bool
@@ -710,7 +710,7 @@
const int response_len = ::snprintf (response, sizeof(response), "pid:%llu;port:%u;", debugserver_pid, port);
assert (response_len < sizeof(response));
//m_port_to_pid_map[port] = debugserver_launch_info.GetProcessID();
- success = SendPacket (response, response_len) > 0;
+ success = SendPacketNoLock (response, response_len) > 0;
}
}
::unlink (unix_socket_name);
@@ -736,7 +736,7 @@
StreamString response;
response.PutChar('E');
response.PutCString(m_process_launch_error.AsCString("<unknown error>"));
- return SendPacket (response);
+ return SendPacketNoLock (response.GetData(), response.GetSize());
}
bool
Modified: lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp (original)
+++ lldb/trunk/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp Tue Apr 10 19:24:49 2012
@@ -181,7 +181,7 @@
if (!m_reg_valid[reg])
{
Mutex::Locker locker;
- if (gdb_comm.TryLockSequenceMutex (locker))
+ if (gdb_comm.GetSequenceMutex (locker, 0))
{
const bool thread_suffix_supported = gdb_comm.GetThreadSuffixSupported();
ProcessSP process_sp (m_thread.GetProcess());
@@ -331,7 +331,7 @@
m_reg_data.GetByteOrder())) // dst byte order
{
Mutex::Locker locker;
- if (gdb_comm.TryLockSequenceMutex (locker))
+ if (gdb_comm.GetSequenceMutex (locker, 0))
{
const bool thread_suffix_supported = gdb_comm.GetThreadSuffixSupported();
ProcessSP process_sp (m_thread.GetProcess());
@@ -440,7 +440,7 @@
StringExtractorGDBRemote response;
Mutex::Locker locker;
- if (gdb_comm.TryLockSequenceMutex (locker))
+ if (gdb_comm.GetSequenceMutex (locker, 0))
{
char packet[32];
const bool thread_suffix_supported = gdb_comm.GetThreadSuffixSupported();
@@ -496,7 +496,7 @@
StringExtractorGDBRemote response;
Mutex::Locker locker;
- if (gdb_comm.TryLockSequenceMutex (locker))
+ if (gdb_comm.GetSequenceMutex (locker, 0))
{
const bool thread_suffix_supported = gdb_comm.GetThreadSuffixSupported();
ProcessSP process_sp (m_thread.GetProcess());
Modified: lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp?rev=154458&r1=154457&r2=154458&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp (original)
+++ lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp Tue Apr 10 19:24:49 2012
@@ -1621,10 +1621,10 @@
m_thread_list.DiscardThreadPlans();
- size_t response_size = m_gdb_comm.SendPacket ("D", 1);
+ bool success = m_gdb_comm.Detach ();
if (log)
{
- if (response_size)
+ if (success)
log->PutCString ("ProcessGDBRemote::DoDetach() detach packet sent successfully");
else
log->PutCString ("ProcessGDBRemote::DoDetach() detach packet send failed");
@@ -1691,16 +1691,7 @@
addr_t
ProcessGDBRemote::GetImageInfoAddress()
{
- if (!m_gdb_comm.IsRunning())
- {
- StringExtractorGDBRemote response;
- if (m_gdb_comm.SendPacketAndWaitForResponse("qShlibInfoAddr", ::strlen ("qShlibInfoAddr"), response, false))
- {
- if (response.IsNormalResponse())
- return response.GetHexMaxU64(false, LLDB_INVALID_ADDRESS);
- }
- }
- return LLDB_INVALID_ADDRESS;
+ return m_gdb_comm.GetShlibInfoAddr();
}
//------------------------------------------------------------------
More information about the lldb-commits
mailing list