Declare Gould configuration obsolete:
[deliverable/binutils-gdb.git] / gdb / gnu-nat.h
CommitLineData
ce0787ef 1/* Common things used by the various *gnu-nat.c files
647e52ea 2 Copyright (C) 1995, 1996 Free Software Foundation, Inc.
ce0787ef 3
897ccbb0 4Written by Miles Bader <miles@gnu.ai.mit.edu>
ce0787ef 5
897ccbb0
JM
6The GNU Hurd is free software; you can redistribute it and/or
7modify it under the terms of the GNU General Public License as
8published by the Free Software Foundation; either version 2, or (at
9your option) any later version.
ce0787ef 10
897ccbb0
JM
11The GNU Hurd is distributed in the hope that it will be useful, but
12WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14General Public License for more details.
ce0787ef 15
897ccbb0
JM
16You should have received a copy of the GNU General Public License
17along with this program; if not, write to the Free Software
18Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
ce0787ef
FF
19
20#ifndef __GNU_NAT_H__
21#define __GNU_NAT_H__
22
23#include <unistd.h>
24#include <mach.h>
25
26struct inf;
27
28extern struct inf *current_inferior;
29
30/* Converts a GDB pid to a struct proc. */
31struct proc *inf_tid_to_thread (struct inf *inf, int tid);
32
33/* A proc is either a thread, or the task (there can only be one task proc
34 because it always has the same TID, PROC_TID_TASK). */
35struct proc
36{
37 thread_t port; /* The task or thread port. */
38 int tid; /* The GDB pid (actually a thread id). */
39 int num; /* An id number for threads, to print. */
40
41 mach_port_t saved_exc_port; /* The task/thread's real exception port. */
42 mach_port_t exc_port; /* Our replacement, which for. */
43
44 int sc; /* Desired suspend count. */
45 int cur_sc; /* Implemented suspend count. */
46 int run_sc; /* Default sc when the program is running. */
47 int pause_sc; /* Default sc when gdb has control. */
c889a1eb
MS
48 int resume_sc; /* Sc resulting from the last resume. */
49 int detach_sc; /* SC to leave around when detaching
50 from program. */
ce0787ef
FF
51
52 thread_state_data_t state; /* Registers, &c. */
53 int state_valid : 1; /* True if STATE is up to date. */
54 int state_changed : 1;
55
56 int aborted : 1; /* True if thread_abort has been called. */
647e52ea 57 int dead : 1; /* We happen to know it's actually dead. */
ce0787ef
FF
58
59 /* Bit mask of registers fetched by gdb. This is used when we re-fetch
60 STATE after aborting the thread, to detect that gdb may have out-of-date
61 information. */
62 unsigned long fetched_regs;
63
64 struct inf *inf; /* Where we come from. */
65
66 struct proc *next;
67};
68
69/* The task has a thread entry with this TID. */
70#define PROC_TID_TASK (-1)
71
72#define proc_is_task(proc) ((proc)->tid == PROC_TID_TASK)
73#define proc_is_thread(proc) ((proc)->tid != PROC_TID_TASK)
74
75extern int __proc_pid (struct proc *proc);
76
77extern thread_state_t proc_get_state (struct proc *proc, int will_modify);
78
79#define proc_debug(_proc, msg, args...) \
80 do { struct proc *__proc = (_proc); \
81 debug ("{proc %d/%d %p}: " msg, \
82 __proc_pid (__proc), __proc->tid, __proc , ##args); } while (0)
83
84#if MAINTENANCE_CMDS
85extern int gnu_debug_flag;
86#define debug(msg, args...) \
87 do { if (gnu_debug_flag) \
88 fprintf (stderr, "%s: " msg "\r\n", __FUNCTION__ , ##args); } while (0)
89#else
90#define debug(msg, args...) (void)0
91#endif
92
93#endif /* __GNU_NAT_H__ */
This page took 0.197551 seconds and 4 git commands to generate.