]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/gdbserver/server.h
* inferiors.c (change_inferior_id, add_thread, find_inferior_id):
[thirdparty/binutils-gdb.git] / gdb / gdbserver / server.h
CommitLineData
c906108c 1/* Common definitions for remote server for GDB.
a1928bad 2 Copyright 1993, 1995, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005
b6ba6518 3 Free Software Foundation, Inc.
c906108c 4
c5aa993b 5 This file is part of GDB.
c906108c 6
c5aa993b
JM
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
c906108c 11
c5aa993b
JM
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
c906108c 16
c5aa993b
JM
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA. */
c906108c 21
0a30fbc4
DJ
22#ifndef SERVER_H
23#define SERVER_H
24
25#include "config.h"
0729219d 26
0a30fbc4
DJ
27#include <stdarg.h>
28#include <stdio.h>
29#include <stdlib.h>
30#include <errno.h>
0729219d 31#include <setjmp.h>
0a30fbc4 32
d64b8841
DJ
33#ifdef HAVE_STRING_H
34#include <string.h>
35#endif
36
43d5792c
DJ
37#ifdef NEED_DECLARATION_STRERROR
38#ifndef strerror
39extern char *strerror (int); /* X3.159-1989 4.11.6.2 */
40#endif
41#endif
42
0729219d
DJ
43#ifndef ATTR_NORETURN
44#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7))
45#define ATTR_NORETURN __attribute__ ((noreturn))
46#else
47#define ATTR_NORETURN /* nothing */
48#endif
49#endif
50
51#ifndef ATTR_FORMAT
52#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 4))
53#define ATTR_FORMAT(type, x, y) __attribute__ ((format(type, x, y)))
54#else
55#define ATTR_FORMAT(type, x, y) /* nothing */
56#endif
57#endif
58
59/* FIXME: This should probably be autoconf'd for. It's an integer type at
60 least the size of a (void *). */
0a30fbc4
DJ
61typedef long long CORE_ADDR;
62
0d62e5e8
DJ
63/* Generic information for tracking a list of ``inferiors'' - threads,
64 processes, etc. */
65struct inferior_list
66{
67 struct inferior_list_entry *head;
68 struct inferior_list_entry *tail;
69};
70struct inferior_list_entry
71{
a1928bad 72 unsigned long id;
0d62e5e8
DJ
73 struct inferior_list_entry *next;
74};
75
76/* Opaque type for user-visible threads. */
77struct thread_info;
c04a1aa8 78
0a30fbc4 79#include "regcache.h"
0e98d0a7 80#include "gdb/signals.h"
0a30fbc4 81
ce3a066d 82#include "target.h"
611cb4a5 83#include "mem-break.h"
c906108c
SS
84
85/* Target-specific functions */
86
4ce44c66 87void initialize_low ();
c906108c 88
ce3a066d
DJ
89/* From inferiors.c. */
90
0d62e5e8
DJ
91extern struct inferior_list all_threads;
92void add_inferior_to_list (struct inferior_list *list,
93 struct inferior_list_entry *new_inferior);
94void for_each_inferior (struct inferior_list *list,
95 void (*action) (struct inferior_list_entry *));
96extern struct thread_info *current_inferior;
97void remove_inferior (struct inferior_list *list,
98 struct inferior_list_entry *entry);
99void remove_thread (struct thread_info *thread);
a1928bad 100void add_thread (unsigned long thread_id, void *target_data);
ce3a066d 101void clear_inferiors (void);
0d62e5e8
DJ
102struct inferior_list_entry *find_inferior
103 (struct inferior_list *,
104 int (*func) (struct inferior_list_entry *,
105 void *),
106 void *arg);
107struct inferior_list_entry *find_inferior_id (struct inferior_list *list,
a1928bad 108 unsigned long id);
0d62e5e8
DJ
109void *inferior_target_data (struct thread_info *);
110void set_inferior_target_data (struct thread_info *, void *);
111void *inferior_regcache_data (struct thread_info *);
112void set_inferior_regcache_data (struct thread_info *, void *);
113void change_inferior_id (struct inferior_list *list,
a1928bad 114 unsigned long new_id);
ce3a066d 115
c906108c
SS
116/* Public variables in server.c */
117
a1928bad
DJ
118extern unsigned long cont_thread;
119extern unsigned long general_thread;
120extern unsigned long step_thread;
121extern unsigned long thread_from_wait;
122extern unsigned long old_thread_from_wait;
0d62e5e8 123extern int server_waiting;
c906108c
SS
124
125extern jmp_buf toplevel;
c906108c
SS
126
127/* Functions from remote-utils.c */
128
a14ed312
KB
129int putpkt (char *buf);
130int getpkt (char *buf);
131void remote_open (char *name);
132void remote_close (void);
133void write_ok (char *buf);
134void write_enn (char *buf);
135void enable_async_io (void);
136void disable_async_io (void);
62ea82f5
DJ
137void unblock_async_io (void);
138void block_async_io (void);
a14ed312
KB
139void convert_ascii_to_int (char *from, char *to, int n);
140void convert_int_to_ascii (char *from, char *to, int n);
0d62e5e8
DJ
141void new_thread_notify (int id);
142void dead_thread_notify (int id);
a14ed312 143void prepare_resume_reply (char *buf, char status, unsigned char sig);
c906108c 144
a14ed312
KB
145void decode_m_packet (char *from, CORE_ADDR * mem_addr_ptr,
146 unsigned int *len_ptr);
147void decode_M_packet (char *from, CORE_ADDR * mem_addr_ptr,
148 unsigned int *len_ptr, char *to);
c906108c 149
ce3a066d
DJ
150int unhexify (char *bin, const char *hex, int count);
151int hexify (char *hex, const char *bin, int count);
152
2f2893d9 153int look_up_one_symbol (const char *name, CORE_ADDR *addrp);
ce3a066d 154
0e98d0a7
DJ
155/* Functions from ``signals.c''. */
156enum target_signal target_signal_from_host (int hostsig);
157int target_signal_to_host_p (enum target_signal oursig);
158int target_signal_to_host (enum target_signal oursig);
c906108c
SS
159
160/* Functions from utils.c */
161
a14ed312 162void perror_with_name (char *string);
0729219d
DJ
163void error (const char *string,...) ATTR_NORETURN;
164void fatal (const char *string,...) ATTR_NORETURN;
0a30fbc4
DJ
165void warning (const char *string,...);
166
0729219d 167/* Functions from the register cache definition. */
5c44784c 168
0729219d 169void init_registers (void);
5c44784c
JM
170
171/* Maximum number of bytes to read/write at once. The value here
172 is chosen to fill up a packet (the headers account for the 32). */
173#define MAXBUFBYTES(N) (((N)-32)/2)
174
175/* Buffer sizes for transferring memory, registers, etc. Round up PBUFSIZ to
176 hold all the registers, at least. */
0a30fbc4
DJ
177#define PBUFSIZ ((registers_length () + 32 > 2000) \
178 ? (registers_length () + 32) \
5c44784c 179 : 2000)
0a30fbc4
DJ
180
181#endif /* SERVER_H */