Hi,
Here is the new method to stop the inferior, based on a mix of
Leo's and mine patches. The idea is simple. Loop through all
the inferior threads suspending them.
This version doesn't contain the gdbserver priority handling,
which means that there is a higher chance of the inferior
breaking the method, since the operation is not atomic. For
example by tweaking its own thread's priorities or if the
inferior is calling ResumeThread in its own threads while
gdbserver is stopping them.
The next patch will minimize those chances, by elevating
gdbserver's priority while stopping the inferior with
this method.
Leo, did I miss anything?
Regtested on a local i686-pc-cygwin gdbserver.
Cheers,
Pedro Alves