2008-11-12 Tristan Gingold <gingold@adacore.com>
[binutils-gdb.git] / gdb / gdbthread.h
index ca74976fb871e5faf137fe19c7f2e8a3cd51196d..55c848df2a41d5284d9680efbabe1bd86506b714 100644 (file)
@@ -136,9 +136,16 @@ struct thread_info
      when we finally do stop stepping.  */
   bpstat stepping_through_solib_catchpoints;
 
-  /* The below are only per-thread in non-stop mode.  */
   /* Per-thread command support.  */
+
+  /* Pointer to what is left to do for an execution command after the
+     target stops.  Used only in asynchronous mode, by targets that
+     support async execution.  Several execution commands use it.  */
   struct continuation *continuations;
+
+  /* Similar to the above, but used when a single execution command
+     requires several resume/stop iterations.  Used by the step
+     command.  */
   struct continuation *intermediate_continuations;
 
   /* Nonzero if the thread is being proceeded for a "finish" command
@@ -146,15 +153,24 @@ struct thread_info
   int proceed_to_finish;
 
   enum step_over_calls_kind step_over_calls;
+
+  /* Nonzero if stopped due to a step command.  */
   int stop_step;
+
+  /* If stepping, nonzero means step count is > 1 so don't print frame
+     next time inferior stops if it stops due to stepping.  */
   int step_multi;
 
+  /* Last signal that the inferior received (why it stopped).  */
   enum target_signal stop_signal;
 
   /* Chain containing status of breakpoint(s) the thread stopped
      at.  */
   bpstat stop_bpstat;
 
+  /* True if this thread has been explicitly requested to stop.  */
+  int stop_requested;
+
   /* Private data used by the target vector implementation.  */
   struct private_thread_info *private;
 };
@@ -219,23 +235,6 @@ extern struct thread_info *iterate_over_threads (thread_callback_func, void *);
 
 extern int thread_count (void);
 
-/* infrun context switch: save the debugger state for the given thread.  */
-extern void save_infrun_state (ptid_t ptid,
-                              struct continuation *continuations,
-                              struct continuation *intermediate_continuations,
-                              int stop_step,
-                              int step_multi,
-                              enum target_signal stop_signal);
-
-/* infrun context switch: load the debugger state previously saved
-   for the given thread.  */
-extern void load_infrun_state (ptid_t ptid,
-                              struct continuation **continuations,
-                              struct continuation **intermediate_continuations,
-                              int *stop_step,
-                              int *step_multi,
-                              enum target_signal *stop_signal);
-
 /* Switch from one thread to another.  */
 extern void switch_to_thread (ptid_t ptid);
 
@@ -243,6 +242,13 @@ extern void switch_to_thread (ptid_t ptid);
    If PIDGET (PTID) is -1, marks all threads.  */
 extern void set_running (ptid_t ptid, int running);
 
+/* Marks or clears thread(s) PTID as having been requested to stop.
+   If PTID is MINUS_ONE_PTID, applies to all threads.  If
+   ptid_is_pid(PTID) is true, applies to all threads of the process
+   pointed at by PTID.  If STOP, then the THREAD_STOP_REQUESTED
+   observer is called with PTID as argument.  */
+extern void set_stop_requested (ptid_t ptid, int stop);
+
 /* NOTE: Since the thread state is not a boolean, most times, you do
    not want to check it with negation.  If you really want to check if
    the thread is stopped,