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.
This commit is contained in:
Simon Marchi 2017-12-02 20:36:36 -05:00
parent 83e1b6c13a
commit e4eb0dec0b
2 changed files with 23 additions and 23 deletions

View File

@ -1,3 +1,9 @@
2017-12-02 Simon Marchi <simon.marchi@polymtl.ca>
* linux-low.c (struct counter): Remove.
(second_thread_of_pid_p): Remove.
(last_thread_of_process_p): Use find_thread.
2017-12-02 Simon Marchi <simon.marchi@polymtl.ca>
* inferiors.c (find_inferior_in_random): Remove.

View File

@ -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)
{
struct counter *counter = (struct counter *) args;
if (thread->id.pid () == counter->pid)
{
if (++counter->count > 1)
return 1;
}
return 0;
}
static int
last_thread_of_process_p (int pid)
{
struct counter counter = { pid , 0 };
bool seen_one = false;
return (find_inferior (&all_threads,
second_thread_of_pid_p, &counter) == NULL);
thread_info *thread = find_thread (pid, [&] (thread_info *thread)
{
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 thread == NULL;
}
/* Kill LWP. */