/* Multi-process/thread control defs for GDB, the GNU debugger.
Copyright (C) 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1997, 1998, 1999,
- 2000, 2007, 2008, 2009 Free Software Foundation, Inc.
+ 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Contributed by Lynx Real-Time Systems, Inc. Los Gatos, CA.
This is how we know when we step into a subroutine call, and how
to set the frame for the breakpoint used to step out. */
struct frame_id step_frame_id;
+
+ /* Similarly, the frame ID of the underlying stack frame (skipping
+ any inlined frames). */
+ struct frame_id step_stack_frame_id;
+
int current_line;
struct symtab *current_symtab;
/* Private data used by the target vector implementation. */
struct private_thread_info *private;
+
+ /* Function that is called to free PRIVATE. If this is NULL, then
+ xfree will be called on PRIVATE. */
+ void (*private_dtor) (struct private_thread_info *);
};
/* Create an empty thread list, or empty the existing one. */
extern int valid_thread_id (int thread);
/* Search function to lookup a thread by 'pid'. */
-extern struct thread_info *find_thread_pid (ptid_t ptid);
+extern struct thread_info *find_thread_ptid (ptid_t ptid);
/* Find thread by GDB user-visible thread number. */
struct thread_info *find_thread_id (int num);
returns the first thread in the list. */
struct thread_info *first_thread_of_process (int pid);
+/* Returns any thread of process PID. */
+extern struct thread_info *any_thread_of_process (int pid);
+
+/* Returns any non-exited thread of process PID, giving preference for
+ already stopped threads. */
+extern struct thread_info *any_live_thread_of_process (int pid);
+
/* Change the ptid of thread OLD_PTID to NEW_PTID. */
void thread_change_ptid (ptid_t old_ptid, ptid_t new_ptid);
INFERIOR_PTID. INFERIOR_PTID *must* be in the thread list. */
extern struct thread_info* inferior_thread (void);
+extern void update_thread_list (void);
+
#endif /* GDBTHREAD_H */