Subject: [PATCH] [Hurd/gnu-nat.c] Use ptid_t.lwpid to store thread ids

instead of ptid_t.tid.

In preparation for reusing gnu-nat.c in gdbserver, switch to storing
thread ids in the lwpid field of ptid_t rather than in the tid
field.  The Hurd's thread model is 1:1, so it doesn't feel wrong
anyway.

gdb/
2013-09-18  Pedro Alves  <palves@redhat.com>

	* gnu-nat.c (inf_validate_procs, gnu_wait, gnu_resume)
	(gnu_create_inferior)
	(gnu_attach, gnu_thread_alive, gnu_pid_to_str, cur_thread)
	(set_sig_thread_cmd): Use the lwpid field of ptids to
	store/extract thread ids instead of the tid field.
	* i386gnu-nat.c (gnu_fetch_registers): Adjust.
This commit is contained in:
Pedro Alves 2013-09-18 14:47:51 +00:00
parent e4c6a2c42d
commit ca08a94cf0
3 changed files with 23 additions and 14 deletions

View File

@ -1,3 +1,12 @@
2013-09-18 Pedro Alves <palves@redhat.com>
* gnu-nat.c (inf_validate_procs, gnu_wait, gnu_resume)
(gnu_create_inferior)
(gnu_attach, gnu_thread_alive, gnu_pid_to_str, cur_thread)
(set_sig_thread_cmd): Use the lwpid field of ptids to
store/extract thread ids instead of the tid field.
* i386gnu-nat.c (gnu_fetch_registers): Adjust.
2013-09-18 Andrew Burgess <aburgess@broadcom.com>
* infcmd.c (default_print_one_register_info): Add detection of

View File

@ -1083,7 +1083,7 @@ inf_validate_procs (struct inf *inf)
last = thread;
proc_debug (thread, "new thread: %d", threads[i]);
ptid = ptid_build (inf->pid, 0, thread->tid);
ptid = ptid_build (inf->pid, thread->tid, 0);
/* Tell GDB's generic thread code. */
@ -1613,17 +1613,17 @@ rewait:
thread = inf->wait.thread;
if (thread)
ptid = ptid_build (inf->pid, 0, thread->tid);
ptid = ptid_build (inf->pid, thread->tid, 0);
else if (ptid_equal (ptid, minus_one_ptid))
thread = inf_tid_to_thread (inf, -1);
else
thread = inf_tid_to_thread (inf, ptid_get_tid (ptid));
thread = inf_tid_to_thread (inf, ptid_get_lwp (ptid));
if (!thread || thread->port == MACH_PORT_NULL)
{
/* TID is dead; try and find a new thread. */
if (inf_update_procs (inf) && inf->threads)
ptid = ptid_build (inf->pid, 0, inf->threads->tid); /* The first
ptid = ptid_build (inf->pid, inf->threads->tid, 0); /* The first
available
thread. */
else
@ -2022,7 +2022,7 @@ gnu_resume (struct target_ops *ops,
else
/* Just allow a single thread to run. */
{
struct proc *thread = inf_tid_to_thread (inf, ptid_get_tid (ptid));
struct proc *thread = inf_tid_to_thread (inf, ptid_get_lwp (ptid));
if (!thread)
error (_("Can't run single thread id %s: no such thread!"),
@ -2033,7 +2033,7 @@ gnu_resume (struct target_ops *ops,
if (step)
{
step_thread = inf_tid_to_thread (inf, ptid_get_tid (ptid));
step_thread = inf_tid_to_thread (inf, ptid_get_lwp (ptid));
if (!step_thread)
warning (_("Can't step thread id %s: no such thread."),
target_pid_to_str (ptid));
@ -2133,7 +2133,7 @@ gnu_create_inferior (struct target_ops *ops,
/* We now have thread info. */
thread_change_ptid (inferior_ptid,
ptid_build (inf->pid, 0, inf_pick_first_thread ()));
ptid_build (inf->pid, inf_pick_first_thread (), 0));
startup_inferior (inf->pending_execs);
@ -2190,7 +2190,7 @@ gnu_attach (struct target_ops *ops, char *args, int from_tty)
inf_update_procs (inf);
inferior_ptid = ptid_build (pid, 0, inf_pick_first_thread ());
inferior_ptid = ptid_build (pid, inf_pick_first_thread (), 0);
/* We have to initialize the terminal settings now, since the code
below might try to restore them. */
@ -2261,7 +2261,7 @@ gnu_thread_alive (struct target_ops *ops, ptid_t ptid)
{
inf_update_procs (gnu_current_inf);
return !!inf_tid_to_thread (gnu_current_inf,
ptid_get_tid (ptid));
ptid_get_lwp (ptid));
}
@ -2596,7 +2596,7 @@ static char *
gnu_pid_to_str (struct target_ops *ops, ptid_t ptid)
{
struct inf *inf = gnu_current_inf;
int tid = ptid_get_tid (ptid);
int tid = ptid_get_lwp (ptid);
struct proc *thread = inf_tid_to_thread (inf, tid);
if (thread)
@ -2729,7 +2729,7 @@ cur_thread (void)
{
struct inf *inf = cur_inf ();
struct proc *thread = inf_tid_to_thread (inf,
ptid_get_tid (inferior_ptid));
ptid_get_lwp (inferior_ptid));
if (!thread)
error (_("No current thread."));
return thread;
@ -2928,7 +2928,7 @@ set_sig_thread_cmd (char *args, int from_tty)
error (_("Thread ID %s not known. "
"Use the \"info threads\" command to\n"
"see the IDs of currently known threads."), args);
inf->signal_thread = inf_tid_to_thread (inf, ptid_get_tid (ptid));
inf->signal_thread = inf_tid_to_thread (inf, ptid_get_lwp (ptid));
}
}

View File

@ -132,7 +132,7 @@ gnu_fetch_registers (struct target_ops *ops,
inf_update_procs (gnu_current_inf);
thread = inf_tid_to_thread (gnu_current_inf,
ptid_get_tid (inferior_ptid));
ptid_get_lwp (inferior_ptid));
if (!thread)
error (_("Can't fetch registers from thread %s: No such thread"),
target_pid_to_str (inferior_ptid));
@ -225,7 +225,7 @@ gnu_store_registers (struct target_ops *ops,
inf_update_procs (gnu_current_inf);
thread = inf_tid_to_thread (gnu_current_inf,
ptid_get_tid (inferior_ptid));
ptid_get_lwp (inferior_ptid));
if (!thread)
error (_("Couldn't store registers into thread %s: No such thread"),
target_pid_to_str (inferior_ptid));