[lldb] [Core] Split read thread support into ThreadedCommunication
authorMichał Górny <mgorny@moritz.systems>
Sat, 3 Sep 2022 08:25:42 +0000 (10:25 +0200)
committerMichał Górny <mgorny@moritz.systems>
Tue, 6 Sep 2022 11:09:42 +0000 (13:09 +0200)
commit9823d42557eb1da3ecf2f771ea2cbc84a988ef92
tree4d736af8d8602582b8a0a759259bef59784f0221
parent83552e8c72b8c41d7a07fbd4bf859ece3eb55099
[lldb] [Core] Split read thread support into ThreadedCommunication

Split the read thread support from Communication into a dedicated
ThreadedCommunication subclass.  The read thread support is used only
by a subset of Communication consumers, and it adds a lot of complexity
to the base class.  Furthermore, having a dedicated subclass makes it
clear whether a particular consumer needs to account for the possibility
of read thread being running or not.

The modules currently calling `StartReadThread()` are updated to use
`ThreadedCommunication`.  The remaining modules use the simplified
`Communication` class.

`SBCommunication` is changed to use `ThreadedCommunication` in order
to avoid changing the public API.

`CommunicationKDP` is updated in order to (hopefully) compile with
the new code.  However, I do not have a Darwin box to test it, so I've
limited the changes to the bare minimum.

`GDBRemoteCommunication` is updated to become a `Broadcaster` directly.
Since it does not inherit from `ThreadedCommunication`, its event
support no longer collides with the one used for read thread and can
be implemented cleanly.  The support for
`eBroadcastBitReadThreadDidExit` is removed from the code -- since
the read thread was not used, this event was never reported.

Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.llvm.org/D133251
18 files changed:
lldb/include/lldb/API/SBCommunication.h
lldb/include/lldb/Core/Communication.h
lldb/include/lldb/Core/ThreadedCommunication.h [new file with mode: 0644]
lldb/include/lldb/Interpreter/ScriptInterpreter.h
lldb/include/lldb/Target/Process.h
lldb/include/lldb/lldb-forward.h
lldb/source/API/SBCommunication.cpp
lldb/source/Core/CMakeLists.txt
lldb/source/Core/Communication.cpp
lldb/source/Core/ThreadedCommunication.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp
lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
lldb/unittests/Core/CommunicationTest.cpp