mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-05 21:50:21 +08:00
* linux-nat.h (linux_proc_get_tgid): Declare.
* linux-nat.c (linux_proc_get_tgid): New. * linux-thread-db.c (struct thread_db_info): New field `need_stale_parent_threads_check'. (add_thread_db_info): Set it. (find_new_threads_callback): Ignore stale fork parent threads. (thread_db_resume): New. (init_thread_db_ops): Install thread_db_resume.
This commit is contained in:
@ -1129,6 +1129,34 @@ exit_lwp (struct lwp_info *lp)
|
||||
delete_lwp (lp->ptid);
|
||||
}
|
||||
|
||||
/* Return an lwp's tgid, found in `/proc/PID/status'. */
|
||||
|
||||
int
|
||||
linux_proc_get_tgid (int lwpid)
|
||||
{
|
||||
FILE *status_file;
|
||||
char buf[100];
|
||||
int tgid = -1;
|
||||
|
||||
snprintf (buf, sizeof (buf), "/proc/%d/status", (int) lwpid);
|
||||
status_file = fopen (buf, "r");
|
||||
if (status_file != NULL)
|
||||
{
|
||||
while (fgets (buf, sizeof (buf), status_file))
|
||||
{
|
||||
if (strncmp (buf, "Tgid:", 5) == 0)
|
||||
{
|
||||
tgid = strtoul (buf + strlen ("Tgid:"), NULL, 10);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fclose (status_file);
|
||||
}
|
||||
|
||||
return tgid;
|
||||
}
|
||||
|
||||
/* Detect `T (stopped)' in `/proc/PID/status'.
|
||||
Other states including `T (tracing stop)' are reported as false. */
|
||||
|
||||
|
Reference in New Issue
Block a user