aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbserver/linux-low.c
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@polymtl.ca>2017-12-02 20:36:36 -0500
committerSimon Marchi <simon.marchi@polymtl.ca>2017-12-02 20:36:36 -0500
commite4eb0dec0b9219a27ea6b9769f098fff34612779 (patch)
tree4be79db80558ea13f54e438d174570785a87707a /gdb/gdbserver/linux-low.c
parent83e1b6c13a285b4e1e852e1647667f09bb26892b (diff)
downloadgdb-e4eb0dec0b9219a27ea6b9769f098fff34612779.zip
gdb-e4eb0dec0b9219a27ea6b9769f098fff34612779.tar.gz
gdb-e4eb0dec0b9219a27ea6b9769f098fff34612779.tar.bz2
Remove usage of find_inferior in last_thread_of_process_p
Replace it with find_thread. I also modified the code a bit to use a lambda and a boolean. gdb/gdbserver/ChangeLog: * linux-low.c (struct counter): Remove. (second_thread_of_pid_p): Remove. (last_thread_of_process_p): Use find_thread.
Diffstat (limited to 'gdb/gdbserver/linux-low.c')
-rw-r--r--gdb/gdbserver/linux-low.c38
1 files changed, 16 insertions, 22 deletions
diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
index ac51d11..2e63468 100644
--- a/gdb/gdbserver/linux-low.c
+++ b/gdb/gdbserver/linux-low.c
@@ -1241,33 +1241,27 @@ linux_attach (unsigned long pid)
return 0;
}
-struct counter
-{
- int pid;
- int count;
-};
-
static int
-second_thread_of_pid_p (thread_info *thread, void *args)
+last_thread_of_process_p (int pid)
{
- struct counter *counter = (struct counter *) args;
+ bool seen_one = false;
- if (thread->id.pid () == counter->pid)
+ thread_info *thread = find_thread (pid, [&] (thread_info *thread)
{
- if (++counter->count > 1)
- return 1;
- }
-
- return 0;
-}
-
-static int
-last_thread_of_process_p (int pid)
-{
- struct counter counter = { pid , 0 };
+ if (!seen_one)
+ {
+ /* This is the first thread of this process we see. */
+ seen_one = true;
+ return false;
+ }
+ else
+ {
+ /* This is the second thread of this process we see. */
+ return true;
+ }
+ });
- return (find_inferior (&all_threads,
- second_thread_of_pid_p, &counter) == NULL);
+ return thread == NULL;
}
/* Kill LWP. */