#include "ui-out.h"
#include "inferior.h"
+/* Frontend view of the thread state. Possible extensions: stepping,
+ finishing, until(ling),... */
+enum thread_state
+{
+ THREAD_STOPPED,
+ THREAD_RUNNING,
+ THREAD_EXITED,
+};
+
/* Inferior thread specific part of `struct infcall_control_state'.
Inferior process counterpart is `struct inferior_control_state'. */
from saying that there is an active target and we are stopped at
a breakpoint, for instance. This is a real indicator whether the
thread is off and running. */
- /* This field is internal to thread.c. Never access it directly,
- use is_executing instead. */
- int executing_;
+ int executing;
/* Frontend view of the thread state. Note that the RUNNING/STOPPED
states are different from EXECUTING. When the thread is stopped
still be true. As a possible future extension, this could turn
into enum { stopped, exited, stepping, finishing, until(ling),
running ... } */
- /* This field is internal to thread.c. Never access it directly,
- use is_running instead. */
- int state_;
+ int state;
/* If this is > 0, then it means there's code out there that relies
on this thread being listed. Don't delete it from the lists even
marks all threads.
Note that this is different from the running state. See the
- description of state_ and executing_ fields of struct
+ description of state and executing fields of struct
thread_info. */
extern void set_executing (ptid_t ptid, int executing);
static void restore_current_thread (ptid_t);
static void prune_threads (void);
-/* Frontend view of the thread state. Possible extensions: stepping,
- finishing, until(ling),... */
-enum thread_state
-{
- THREAD_STOPPED,
- THREAD_RUNNING,
- THREAD_EXITED,
-};
-
struct thread_info*
inferior_thread (void)
{
/* Nothing to follow yet. */
tp->pending_follow.kind = TARGET_WAITKIND_SPURIOUS;
- tp->state_ = THREAD_STOPPED;
+ tp->state = THREAD_STOPPED;
return tp;
}
tp = new_thread (null_ptid);
/* Make switch_to_thread not read from the thread. */
- tp->state_ = THREAD_EXITED;
+ tp->state = THREAD_EXITED;
switch_to_thread (null_ptid);
/* Now we can delete it. */
/* Now reset its ptid, and reswitch inferior_ptid to it. */
tp->ptid = ptid;
- tp->state_ = THREAD_STOPPED;
+ tp->state = THREAD_STOPPED;
switch_to_thread (ptid);
observer_notify_new_thread (tp);
if (tp->refcount > 0
|| ptid_equal (tp->ptid, inferior_ptid))
{
- if (tp->state_ != THREAD_EXITED)
+ if (tp->state != THREAD_EXITED)
{
observer_notify_thread_exit (tp, silent);
/* Tag it as exited. */
- tp->state_ = THREAD_EXITED;
+ tp->state = THREAD_EXITED;
/* Clear breakpoints, etc. associated with this thread. */
clear_thread_inferior_resources (tp);
}
/* Notify thread exit, but only if we haven't already. */
- if (tp->state_ != THREAD_EXITED)
+ if (tp->state != THREAD_EXITED)
observer_notify_thread_exit (tp, silent);
/* Tag it as exited. */
- tp->state_ = THREAD_EXITED;
+ tp->state = THREAD_EXITED;
clear_thread_inferior_resources (tp);
if (tpprev)
struct thread_info *tp_executing = NULL;
for (tp = thread_list; tp; tp = tp->next)
- if (tp->state_ != THREAD_EXITED && ptid_get_pid (tp->ptid) == pid)
+ if (tp->state != THREAD_EXITED && ptid_get_pid (tp->ptid) == pid)
{
- if (tp->executing_)
+ if (tp->executing)
tp_executing = tp;
else
return tp;
for (tp = thread_list; tp; tp = tp->next)
{
- if (tp->state_ == THREAD_EXITED)
+ if (tp->state == THREAD_EXITED)
continue;
if (ptid_equal (tp->ptid, inferior_ptid))
static int
thread_alive (struct thread_info *tp)
{
- if (tp->state_ == THREAD_EXITED)
+ if (tp->state == THREAD_EXITED)
return 0;
if (!target_thread_alive (tp->ptid))
return 0;
for (tp = thread_list; tp; tp = tp->next)
if (all || ptid_get_pid (tp->ptid) == ptid_get_pid (ptid))
{
- if (tp->state_ == THREAD_EXITED)
+ if (tp->state == THREAD_EXITED)
continue;
- if (running && tp->state_ == THREAD_STOPPED)
+ if (running && tp->state == THREAD_STOPPED)
any_started = 1;
- tp->state_ = running ? THREAD_RUNNING : THREAD_STOPPED;
+ tp->state = running ? THREAD_RUNNING : THREAD_STOPPED;
}
if (any_started)
observer_notify_target_resumed (ptid);
tp = find_thread_ptid (ptid);
gdb_assert (tp);
- gdb_assert (tp->state_ != THREAD_EXITED);
- if (running && tp->state_ == THREAD_STOPPED)
+ gdb_assert (tp->state != THREAD_EXITED);
+ if (running && tp->state == THREAD_STOPPED)
started = 1;
- tp->state_ = running ? THREAD_RUNNING : THREAD_STOPPED;
+ tp->state = running ? THREAD_RUNNING : THREAD_STOPPED;
if (started)
observer_notify_target_resumed (ptid);
}
tp = find_thread_ptid (ptid);
gdb_assert (tp);
- return tp->state_ == state;
+ return tp->state == state;
}
int
struct thread_info *tp;
for (tp = thread_list; tp; tp = tp->next)
- if (tp->state_ == THREAD_RUNNING)
+ if (tp->state == THREAD_RUNNING)
return 1;
return 0;
tp = find_thread_ptid (ptid);
gdb_assert (tp);
- return tp->executing_;
+ return tp->executing;
}
void
{
for (tp = thread_list; tp; tp = tp->next)
if (all || ptid_get_pid (tp->ptid) == ptid_get_pid (ptid))
- tp->executing_ = executing;
+ tp->executing = executing;
}
else
{
tp = find_thread_ptid (ptid);
gdb_assert (tp);
- tp->executing_ = executing;
+ tp->executing = executing;
}
}
{
for (tp = thread_list; tp; tp = tp->next)
{
- if (tp->state_ == THREAD_EXITED)
+ if (tp->state == THREAD_EXITED)
continue;
if (all || ptid_get_pid (ptid) == ptid_get_pid (tp->ptid))
{
- if (tp->executing_ && tp->state_ == THREAD_STOPPED)
+ if (tp->executing && tp->state == THREAD_STOPPED)
any_started = 1;
- tp->state_ = tp->executing_ ? THREAD_RUNNING : THREAD_STOPPED;
+ tp->state = tp->executing ? THREAD_RUNNING : THREAD_STOPPED;
}
}
}
{
tp = find_thread_ptid (ptid);
gdb_assert (tp);
- if (tp->state_ != THREAD_EXITED)
+ if (tp->state != THREAD_EXITED)
{
- if (tp->executing_ && tp->state_ == THREAD_STOPPED)
+ if (tp->executing && tp->state == THREAD_STOPPED)
any_started = 1;
- tp->state_ = tp->executing_ ? THREAD_RUNNING : THREAD_STOPPED;
+ tp->state = tp->executing ? THREAD_RUNNING : THREAD_STOPPED;
}
}
if (pid != -1 && PIDGET (tp->ptid) != pid)
continue;
- if (tp->state_ == THREAD_EXITED)
+ if (tp->state == THREAD_EXITED)
continue;
++n_threads;
if (ptid_equal (tp->ptid, current_ptid))
current_thread = tp->num;
- if (tp->state_ == THREAD_EXITED)
+ if (tp->state == THREAD_EXITED)
continue;
chain2 = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
do_cleanups (str_cleanup);
}
- if (tp->state_ == THREAD_RUNNING)
+ if (tp->state == THREAD_RUNNING)
ui_out_text (uiout, "(running)\n");
else
{
{
char *state = "stopped";
- if (tp->state_ == THREAD_RUNNING)
+ if (tp->state == THREAD_RUNNING)
state = "running";
ui_out_field_string (uiout, "state", state);
}
/* Note that we can't reach this with an exited thread, due to the
thread_alive check above. */
- if (tp->state_ == THREAD_RUNNING)
+ if (tp->state == THREAD_RUNNING)
ui_out_text (uiout, "(running)\n");
else
{