* score-tdep.c (score_print_insn): Get the current endianess from
[deliverable/binutils-gdb.git] / gdb / gdbthread.h
CommitLineData
c906108c 1/* Multi-process/thread control defs for GDB, the GNU debugger.
197e01b6 2 Copyright (C) 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1997, 1998, 1999,
9b254dd1 3 2000, 2007, 2008 Free Software Foundation, Inc.
b6ba6518
KB
4 Contributed by Lynx Real-Time Systems, Inc. Los Gatos, CA.
5
c906108c 6
c5aa993b 7 This file is part of GDB.
c906108c 8
c5aa993b
JM
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
c5aa993b 12 (at your option) any later version.
c906108c 13
c5aa993b
JM
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
c906108c 18
c5aa993b 19 You should have received a copy of the GNU General Public License
a9762ec7 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
21
22#ifndef GDBTHREAD_H
23#define GDBTHREAD_H
24
da3331ec
AC
25struct breakpoint;
26struct frame_id;
27struct symtab;
28
c906108c
SS
29/* For bpstat */
30#include "breakpoint.h"
31
aa0cd9c1
AC
32/* For struct frame_id. */
33#include "frame.h"
34
8e8901c5
VP
35#include "ui-out.h"
36
0d06e24b
JM
37struct thread_info
38{
39 struct thread_info *next;
39f77062 40 ptid_t ptid; /* "Actual process id";
0d06e24b
JM
41 In fact, this may be overloaded with
42 kernel thread id, etc. */
43 int num; /* Convenient handle (GDB thread id) */
44 /* State from wait_for_inferior */
45 CORE_ADDR prev_pc;
0d06e24b 46 struct breakpoint *step_resume_breakpoint;
0d06e24b
JM
47 CORE_ADDR step_range_start;
48 CORE_ADDR step_range_end;
aa0cd9c1 49 struct frame_id step_frame_id;
6c0d3f6a
MS
50 int current_line;
51 struct symtab *current_symtab;
0d06e24b 52 int trap_expected;
ca67fcb8 53 int stepping_over_breakpoint;
0d06e24b
JM
54
55 /* This is set TRUE when a catchpoint of a shared library event
56 triggers. Since we don't wish to leave the inferior in the
57 solib hook when we report the event, we step the inferior
58 back to user code before stopping and reporting the event. */
59 int stepping_through_solib_after_catch;
60
61 /* When stepping_through_solib_after_catch is TRUE, this is a
62 list of the catchpoints that should be reported as triggering
63 when we finally do stop stepping. */
64 bpstat stepping_through_solib_catchpoints;
65
0d06e24b
JM
66 /* Private data used by the target vector implementation. */
67 struct private_thread_info *private;
68};
69
70/* Create an empty thread list, or empty the existing one. */
71extern void init_thread_list (void);
72
93815fbf
VP
73/* Add a thread to the thread list, print a message
74 that a new thread is found, and return the pointer to
75 the new thread. Caller my use this pointer to
76 initialize the private thread data. */
39f77062 77extern struct thread_info *add_thread (ptid_t ptid);
0d06e24b 78
93815fbf
VP
79/* Same as add_thread, but does not print a message
80 about new thread. */
81extern struct thread_info *add_thread_silent (ptid_t ptid);
82
17faa917
DJ
83/* Same as add_thread, and sets the private info. */
84extern struct thread_info *add_thread_with_info (ptid_t ptid,
85 struct private_thread_info *);
86
0d06e24b 87/* Delete an existing thread list entry. */
39f77062 88extern void delete_thread (ptid_t);
0d06e24b 89
8601f500
MS
90/* Delete a step_resume_breakpoint from the thread database. */
91extern void delete_step_resume_breakpoint (void *);
92
0d06e24b
JM
93/* Translate the integer thread id (GDB's homegrown id, not the system's)
94 into a "pid" (which may be overloaded with extra thread information). */
39f77062 95extern ptid_t thread_id_to_pid (int);
0d06e24b
JM
96
97/* Translate a 'pid' (which may be overloaded with extra thread information)
98 into the integer thread id (GDB's homegrown id, not the system's). */
39f77062 99extern int pid_to_thread_id (ptid_t ptid);
0d06e24b
JM
100
101/* Boolean test for an already-known pid (which may be overloaded with
102 extra thread information). */
39f77062 103extern int in_thread_list (ptid_t ptid);
0d06e24b
JM
104
105/* Boolean test for an already-known thread id (GDB's homegrown id,
106 not the system's). */
107extern int valid_thread_id (int thread);
108
109/* Search function to lookup a thread by 'pid'. */
39f77062 110extern struct thread_info *find_thread_pid (ptid_t ptid);
0d06e24b
JM
111
112/* Iterator function to call a user-provided callback function
113 once for each known thread. */
114typedef int (*thread_callback_func) (struct thread_info *, void *);
115extern struct thread_info *iterate_over_threads (thread_callback_func, void *);
116
117/* infrun context switch: save the debugger state for the given thread. */
39f77062 118extern void save_infrun_state (ptid_t ptid,
0d06e24b 119 CORE_ADDR prev_pc,
0d06e24b
JM
120 int trap_expected,
121 struct breakpoint *step_resume_breakpoint,
0d06e24b
JM
122 CORE_ADDR step_range_start,
123 CORE_ADDR step_range_end,
aa0cd9c1 124 const struct frame_id *step_frame_id,
0d06e24b
JM
125 int another_trap,
126 int stepping_through_solib_after_catch,
127 bpstat stepping_through_solib_catchpoints,
6c0d3f6a 128 int current_line,
f2c9ca08 129 struct symtab *current_symtab);
0d06e24b
JM
130
131/* infrun context switch: load the debugger state previously saved
132 for the given thread. */
39f77062 133extern void load_infrun_state (ptid_t ptid,
0d06e24b 134 CORE_ADDR *prev_pc,
0d06e24b
JM
135 int *trap_expected,
136 struct breakpoint **step_resume_breakpoint,
0d06e24b
JM
137 CORE_ADDR *step_range_start,
138 CORE_ADDR *step_range_end,
aa0cd9c1 139 struct frame_id *step_frame_id,
0d06e24b
JM
140 int *another_trap,
141 int *stepping_through_solib_affter_catch,
142 bpstat *stepping_through_solib_catchpoints,
6c0d3f6a 143 int *current_line,
f2c9ca08 144 struct symtab **current_symtab);
c906108c 145
6a6b96b9
UW
146/* Switch from one thread to another. */
147extern void switch_to_thread (ptid_t ptid);
148
c906108c
SS
149/* Commands with a prefix of `thread'. */
150extern struct cmd_list_element *thread_cmd_list;
151
93815fbf
VP
152/* Print notices on thread events (attach, detach, etc.), set with
153 `set print thread-events'. */
154extern int print_thread_events;
155
8e8901c5
VP
156extern void print_thread_info (struct ui_out *uiout, int thread);
157
6208b47d
VP
158extern struct cleanup *make_cleanup_restore_current_thread (ptid_t,
159 struct frame_id);
160
161
c5aa993b 162#endif /* GDBTHREAD_H */
This page took 0.622095 seconds and 4 git commands to generate.