#include "progspace.h"
-/* Two structures are used to record inferior state.
+struct infcall_suspend_state;
+struct infcall_control_state;
- inferior_thread_state contains state about the program itself like its
- registers and any signal it received when it last stopped.
- This state must be restored regardless of how the inferior function call
- ends (either successfully, or after it hits a breakpoint or signal)
- if the program is to properly continue where it left off.
+extern struct infcall_suspend_state *save_infcall_suspend_state (void);
+extern struct infcall_control_state *save_infcall_control_state (void);
- inferior_status contains state regarding gdb's control of the inferior
- itself like stepping control. It also contains session state like the
- user's currently selected frame.
+extern void restore_infcall_suspend_state (struct infcall_suspend_state *);
+extern void restore_infcall_control_state (struct infcall_control_state *);
- Call these routines around hand called functions, including function calls
- in conditional breakpoints for example. */
+extern struct cleanup *make_cleanup_restore_infcall_suspend_state
+ (struct infcall_suspend_state *);
+extern struct cleanup *make_cleanup_restore_infcall_control_state
+ (struct infcall_control_state *);
-struct inferior_thread_state;
-struct inferior_status;
+extern void discard_infcall_suspend_state (struct infcall_suspend_state *);
+extern void discard_infcall_control_state (struct infcall_control_state *);
-extern struct inferior_thread_state *save_inferior_thread_state (void);
-extern struct inferior_status *save_inferior_status (void);
-
-extern void restore_inferior_thread_state (struct inferior_thread_state *);
-extern void restore_inferior_status (struct inferior_status *);
-
-extern struct cleanup *make_cleanup_restore_inferior_thread_state (struct inferior_thread_state *);
-extern struct cleanup *make_cleanup_restore_inferior_status (struct inferior_status *);
-
-extern void discard_inferior_thread_state (struct inferior_thread_state *);
-extern void discard_inferior_status (struct inferior_status *);
-
-extern struct regcache *get_inferior_thread_state_regcache (struct inferior_thread_state *);
+extern struct regcache *
+ get_infcall_suspend_state_regcache (struct infcall_suspend_state *);
/* The -1 ptid, often used to indicate either an error condition
or a "don't care" condition, i.e, "run all threads." */
/* Return true if PTID represents a process id. */
extern int ptid_is_pid (ptid_t ptid);
+/* Returns true if PTID matches filter FILTER. FILTER can be the wild
+ card MINUS_ONE_PTID (all ptid match it); can be a ptid representing
+ a process (ptid_is_pid returns true), in which case, all lwps and
+ threads of that given process match, lwps and threads of other
+ processes do not; or, it can represent a specific thread, in which
+ case, only that thread will match true. PTID must represent a
+ specific LWP or THREAD, it can never be a wild card. */
+
+extern int ptid_match (ptid_t ptid, ptid_t filter);
+
/* Save value of inferior_ptid so that it may be restored by
a later call to do_cleanups(). Returns the struct cleanup
pointer needed for later doing the cleanup. */
extern void wait_for_inferior (int treat_exec_as_sigtrap);
+extern void prepare_for_detach (void);
+
extern void fetch_inferior_event (void *);
extern void init_wait_for_inferior (void);
/* From infrun.c */
+extern int debug_infrun;
+
+extern int stop_on_solib_events;
+
extern void start_remote (int from_tty);
extern void normal_stop (void);
extern void interrupt_target_1 (int all_threads);
+extern void delete_longjmp_breakpoint_cleanup (void *arg);
+
extern void detach_command (char *, int);
extern void notice_new_inferior (ptid_t, int, int);
/* Nonzero if stopped due to completion of a stack dummy routine. */
-extern int stop_stack_dummy;
+extern enum stop_stack_kind stop_stack_dummy;
/* Nonzero if program stopped due to a random (unexpected) signal in
inferior process. */
struct private_inferior;
+/* Inferior process specific part of `struct infcall_control_state'.
+
+ Inferior thread counterpart is `struct thread_control_state'. */
+
+struct inferior_control_state
+{
+ /* See the definition of stop_kind above. */
+ enum stop_kind stop_soon;
+};
+
+/* Inferior process specific part of `struct infcall_suspend_state'.
+
+ Inferior thread counterpart is `struct thread_suspend_state'. */
+
+struct inferior_suspend_state
+{
+};
+
/* GDB represents the state of each program execution with an object
called an inferior. An inferior typically corresponds to a process
but is more general and applies also to targets that do not have a
the ptid_t.pid member of threads of this inferior. */
int pid;
+ /* State of GDB control of inferior process execution.
+ See `struct inferior_control_state'. */
+ struct inferior_control_state control;
+
+ /* State of inferior process to restore after GDB is done with an inferior
+ call. See `struct inferior_suspend_state'. */
+ struct inferior_suspend_state suspend;
+
/* True if this was an auto-created inferior, e.g. created from
following a fork; false, if this inferior was manually added by
the user, and we should not attempt to prune it
in format described in environ.h. */
struct gdb_environ *environment;
- /* See the definition of stop_kind above. */
- enum stop_kind stop_soon;
-
/* Nonzero if this child process was attached rather than
forked. */
int attach_flag;
either by exiting or execing. */
int waiting_for_vfork_done;
+ /* True if we're in the process of detaching from this inferior. */
+ int detaching;
+
/* What is left to do for an execution command after any thread of
this inferior stops. For continuations associated with a
specific thread, see `struct thread_info'. */
extern struct inferior *add_inferior_with_spaces (void);
+extern void update_observer_mode (void);
+
#endif /* !defined (INFERIOR_H) */