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
I think you're missing this file.