]>
Commit | Line | Data |
---|---|---|
5580185e | 1 | /* |
2 | * $Source$ | |
3 | * $Header$ | |
4 | */ | |
5 | ||
6 | /************************************************************************/ | |
7 | /* | |
8 | /* gdb_lib.h | |
9 | /* | |
10 | /* Includes used within the Global Database Facilities library. | |
11 | /* Should NOT be included by typical users of gdb. | |
12 | /* | |
13 | /* Author: Noah Mendelsohn | |
14 | /* Copyright: 1986 MIT Project Athena | |
15 | /* | |
16 | /************************************************************************/ | |
17 | ||
18 | /************************************************************************/ | |
19 | /* | |
20 | /* USER IDENTIFICATION | |
21 | /* | |
22 | /* gdb_init puts the user's i.d. and hostname as strings here. | |
23 | /* | |
24 | /************************************************************************/ | |
25 | ||
26 | char *gdb_uname; /* user's string name */ | |
27 | char *gdb_host; /* name of local host */ | |
28 | /* goes here */ | |
29 | ||
30 | ||
31 | /************************************************************************/ | |
32 | /* | |
33 | /* MEMORY MANAGEMENT | |
34 | /* | |
35 | /* These vectors point to the memory allocation and free routines. | |
36 | /* The standard routines supplied with the system are gdb_am and | |
37 | /* gdb_fm, but users may supply their own by clobbering the vectors. | |
38 | /* | |
39 | /************************************************************************/ | |
40 | ||
41 | char *((*gdb_amv)()) = gdb_am; | |
42 | int (*gdb_fmv)() = gdb_fm; | |
43 | ||
44 | ||
45 | ||
46 | /************************************************************************/ | |
47 | /* | |
48 | /* | |
49 | /* SYSTEM TYPE DEFINITIONS | |
50 | /* | |
51 | /* Declarations used to control the definition and use of 'types' | |
52 | /* as supported by the global database system. | |
53 | /* | |
54 | /* | |
55 | /************************************************************************/ | |
56 | ||
8ed12f3c | 57 | int gdb_Options=0; /* GDB options are set here */ |
58 | ||
5580185e | 59 | int gdb_Debug=0; /* debugging flags are */ |
60 | /* stored here */ | |
61 | FILE *gdb_log = stderr; /* all debugging */ | |
62 | /* output goes on stderr*/ | |
63 | ||
64 | char g_errstr[150]; /* build emsgs here */ | |
65 | ||
66 | /* | |
67 | * g_type_table | |
68 | * | |
69 | * This is the table where the actual definitions for the types are | |
70 | * kept. | |
71 | */ | |
72 | ||
73 | gdb_type_def g_type_table[GDB_MAX_TYPES]; | |
74 | int gdb_n_types; /* number of entries in */ | |
75 | /* table */ | |
76 | /* | |
77 | * connection failure indicator | |
78 | * | |
79 | * This variable is used to communicate between gdb_move_data and | |
80 | * g_con_progress without passing an extra parameter through lots | |
81 | * of procedure calls. When set to FALSE, it indicates that the | |
82 | * connection currently being processed has encountered a fatal error | |
83 | * and should be severed. | |
84 | */ | |
85 | int gdb_conok; | |
86 | \f | |
87 | /************************************************************************/ | |
88 | /* | |
89 | /* CONNECTION AND DATA TRANSMISSION SERVICES | |
90 | /* | |
91 | /* These are the global data structures used by the routines | |
92 | /* which maintain connections and do asynchronous data transfer | |
93 | /* on them. | |
94 | /* | |
95 | /************************************************************************/ | |
96 | ||
97 | /*----------------------------------------------------------*/ | |
98 | /* | |
99 | /* gdb_cons | |
100 | /* | |
101 | /* This is the array of connection control data | |
102 | /* structures for gdb. Every connection has its | |
103 | /* structure stored here, but they are in no | |
104 | /* particular order. Because the connection data | |
105 | /* itself cannot be moved (due to possible dangling | |
106 | /* pointers), there may be some unused connections | |
107 | /* in the middle of this array. gdb_mcons is the | |
108 | /* 1 based number of the highest connection which is | |
109 | /* actually in use at this time. This is a considerable | |
110 | /* optimization for the typical case where very few | |
111 | /* are in use, and turnover is low. | |
112 | /* | |
113 | /*----------------------------------------------------------*/ | |
114 | ||
115 | int gdb_mcons; /* 0 based index of */ | |
116 | /* last connection */ | |
117 | /* currently in use */ | |
118 | ||
119 | int gdb_mfd; /* number of the highest */ | |
120 | /* file descriptor in use */ | |
121 | /* for a connection */ | |
122 | struct con_data gdb_cons[GDB_MAX_CONNECTIONS]; /* actual connection data */ | |
123 | /* is stored here */ | |
124 | ||
125 | /*----------------------------------------------------------*/ | |
126 | /* | |
127 | /* Bit maps of the file descriptors involved in connections. | |
128 | /* Technically, this is redundant with the information in | |
129 | /* the connection descriptors above, but it makes select | |
130 | /* preparation much faster. | |
131 | /* | |
132 | /*----------------------------------------------------------*/ | |
133 | ||
134 | fd_set gdb_crfds, gdb_cwfds, gdb_cefds; /* connection related file */ | |
135 | /* descriptor maps to be */ | |
136 | /* used in select */ | |
24582af9 | 137 | fd_set last_crfds, last_cwfds, last_cefds; /* these file desc. bit */ |
138 | /* masks are set up */ | |
139 | /* for each select call */ | |
140 | /* to include the user */ | |
141 | /* supplied and the */ | |
142 | /* connection related */ | |
143 | /* fd's */ | |
144 | ||
5580185e | 145 | /*----------------------------------------------------------*/ |
146 | /* | |
147 | /* gdb_notime | |
148 | /* | |
149 | /* Pass this to select when doing a poll. | |
150 | /* | |
151 | /*----------------------------------------------------------*/ | |
152 | ||
153 | struct timeval gdb_notime = {0,0}; | |
154 | \f | |
155 | /************************************************************************/ | |
156 | /* | |
157 | /* SERVER/CLIENT MANAGEMENT | |
158 | /* | |
159 | /* Definitions used in starting and maintaining communication | |
160 | /* between servers and clients (as opposed to peers.) | |
161 | /* | |
162 | /************************************************************************/ | |
163 | ||
164 | TUPLE_DESCRIPTOR gdb_tosrv; /* descriptor for request */ | |
165 | /* tuples sent to the */ | |
166 | /* server during negotiation*/ | |
167 | ||
168 | TUPLE_DESCRIPTOR gdb_fmsrv; /* descriptor for request */ | |
169 | /* tuples sent from the */ | |
170 | /* server during negotiation*/ | |
171 | ||
172 | /*----------------------------------------------------------*/ | |
173 | /* | |
174 | /* Global variables inherited by a child from a server | |
175 | /* parent. | |
176 | /* | |
177 | /*----------------------------------------------------------*/ | |
178 | ||
179 | TUPLE gdb_client_tuple; /* request tuple sent from */ | |
180 | /* the client */ | |
181 | ||
182 | char gdb_sockaddr_of_client[100]; /* this should really be */ | |
183 | /* sockaddr_in, but I don't */ | |
184 | /* want everyone to have */ | |
185 | /* to include all those */ | |
186 | /* big .h files */ | |
187 | int gdb_socklen; /* length of above */ | |
188 |