diff options
Diffstat (limited to 'gdb/gdbserver')
-rw-r--r-- | gdb/gdbserver/ChangeLog | 10 | ||||
-rw-r--r-- | gdb/gdbserver/linux-low.c | 28 |
2 files changed, 27 insertions, 11 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 88319ae209f..1d88781cce8 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,5 +1,15 @@ 2017-12-02 Simon Marchi <simon.marchi@polymtl.ca> + * linux-low.c (send_sigstop_callback): Return void, change + parameter type. Rename to... + (send_sigstop): ... this. + (suspend_and_send_sigstop_callback): Return void, change parameter + type. Rename to... + (suspend_and_send_sigstop): ... this. + (stop_all_lwps): Use for_each_thread. + +2017-12-02 Simon Marchi <simon.marchi@polymtl.ca> + * linux-low.c (lwp_running): Return bool, remove unused argument. (linux_stabilize_threads): Use find_thread. diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c index 840bf694b76..9725b4906c6 100644 --- a/gdb/gdbserver/linux-low.c +++ b/gdb/gdbserver/linux-low.c @@ -3933,36 +3933,35 @@ send_sigstop (struct lwp_info *lwp) kill_lwp (pid, SIGSTOP); } -static int -send_sigstop_callback (thread_info *thread, void *except) +static void +send_sigstop (thread_info *thread, lwp_info *except) { struct lwp_info *lwp = get_thread_lwp (thread); /* Ignore EXCEPT. */ if (lwp == except) - return 0; + return; if (lwp->stopped) - return 0; + return; send_sigstop (lwp); - return 0; } /* Increment the suspend count of an LWP, and stop it, if not stopped yet. */ -static int -suspend_and_send_sigstop_callback (thread_info *thread, void *except) +static void +suspend_and_send_sigstop (thread_info *thread, lwp_info *except) { struct lwp_info *lwp = get_thread_lwp (thread); /* Ignore EXCEPT. */ if (lwp == except) - return 0; + return; lwp_suspended_inc (lwp); - return send_sigstop_callback (thread, except); + send_sigstop (thread, except); } static void @@ -4157,9 +4156,16 @@ stop_all_lwps (int suspend, struct lwp_info *except) : STOPPING_THREADS); if (suspend) - find_inferior (&all_threads, suspend_and_send_sigstop_callback, except); + for_each_thread ([&] (thread_info *thread) + { + suspend_and_send_sigstop (thread, except); + }); else - find_inferior (&all_threads, send_sigstop_callback, except); + for_each_thread ([&] (thread_info *thread) + { + send_sigstop (thread, except); + }); + wait_for_sigstop (); stopping_threads = NOT_STOPPING_THREADS; |