89
89
* Some fundamental constants
91
#define CONNECTOR_STACK 4000 /* stack for connector task */
92
#define DEVREADER_STACK 4000 /* stack for device reader */
93
#define CREATOR_STACK 4000 /* stack for connection creator */
94
#define MAXTASKS 100 /* Maximum # clients */
91
#define CONNECTOR_STACK 4000 /* stack for connector task */
92
#define DEVREADER_STACK 4000 /* stack for device reader */
93
#define CREATOR_STACK 4000 /* stack for connection creator */
94
#define MAXTASKS 100 /* Maximum # clients */
97
97
* OsComm status bits
99
#define CONN_KILLED 01 /* Connection being closed */
100
#define REQ_PUSHBACK 02 /* Request pushed back */
101
#define IGNORE 04 /* True if client ignored */
99
#define CONN_KILLED 01 /* Connection being closed */
100
#define REQ_PUSHBACK 02 /* Request pushed back */
101
#define IGNORE 04 /* True if client ignored */
102
102
#endif /* AMOEBA */
165
165
#define COPYBITS(src, dst) dst[0] = src[0]; dst[1] = src[1]
166
166
#define CLEARBITS(buf) buf[0] = 0; buf[1] = 0
167
167
#define MASKANDSETBITS(dst, b1, b2) \
168
dst[0] = (b1[0] & b2[0]);\
169
dst[1] = (b1[1] & b2[1])
168
dst[0] = (b1[0] & b2[0]);\
169
dst[1] = (b1[1] & b2[1])
170
170
#define ORBITS(dst, b1, b2) \
171
dst[0] = (b1[0] | b2[0]);\
172
dst[1] = (b1[1] | b2[1])
171
dst[0] = (b1[0] | b2[0]);\
172
dst[1] = (b1[1] | b2[1])
173
173
#define UNSETBITS(dst, b1) \
174
174
dst[0] &= ~b1[0]; \
179
179
#define COPYBITS(src, dst) dst[0] = src[0]; dst[1] = src[1]; dst[2] = src[2];
180
180
#define CLEARBITS(buf) buf[0] = 0; buf[1] = 0; buf[2] = 0
181
181
#define MASKANDSETBITS(dst, b1, b2) \
182
dst[0] = (b1[0] & b2[0]);\
183
dst[1] = (b1[1] & b2[1]);\
184
dst[2] = (b1[2] & b2[2])
182
dst[0] = (b1[0] & b2[0]);\
183
dst[1] = (b1[1] & b2[1]);\
184
dst[2] = (b1[2] & b2[2])
185
185
#define ORBITS(dst, b1, b2) \
186
dst[0] = (b1[0] | b2[0]);\
187
dst[1] = (b1[1] | b2[1]);\
188
dst[2] = (b1[2] | b2[2])
186
dst[0] = (b1[0] | b2[0]);\
187
dst[1] = (b1[1] | b2[1]);\
188
dst[2] = (b1[2] | b2[2])
189
189
#define UNSETBITS(dst, b1) \
190
190
dst[0] &= ~b1[0]; \
191
191
dst[1] &= ~b1[1]; \
218
218
#define COPYBITS(src, dst) bcopy((caddr_t) src, (caddr_t) dst,\
220
220
#define CLEARBITS(buf) bzero((caddr_t) buf, mskcnt*sizeof(long))
221
221
#define MASKANDSETBITS(dst, b1, b2) \
223
for (cri=mskcnt; --cri>=0; ) \
224
dst[cri] = (b1[cri] & b2[cri]); }
223
for (cri=mskcnt; --cri>=0; ) \
224
dst[cri] = (b1[cri] & b2[cri]); }
225
225
#define ORBITS(dst, b1, b2) \
227
for (cri=mskcnt; --cri>=0; ) \
228
dst[cri] = (b1[cri] | b2[cri]); }
227
for (cri=mskcnt; --cri>=0; ) \
228
dst[cri] = (b1[cri] | b2[cri]); }
229
229
#define UNSETBITS(dst, b1) \
231
for (cri=mskcnt; --cri>=0; ) \
232
dst[cri] &= ~b1[cri]; }
231
for (cri=mskcnt; --cri>=0; ) \
232
dst[cri] &= ~b1[cri]; }
234
234
#define ANYSET(src) (src[0] || src[1] || src[2] || src[3] || \
235
src[4] || src[5] || src[6] || src[7])
235
src[4] || src[5] || src[6] || src[7])
238
238
* If mskcnt>4 and not 8, then ANYSET is a routine defined in WaitFor.c.
247
247
struct _connectionInput *next;
248
248
char *buffer; /* contains current client input */
249
249
char *bufptr; /* pointer to current start of data */
250
int bufcnt; /* count of bytes in buffer */
250
int bufcnt; /* count of bytes in buffer */
253
253
} ConnectionInput, *ConnectionInputPtr;
265
265
typedef struct _amTcpIpComm {
266
capability cap; /* connection capability */
267
struct circbuf *cb; /* input buffer */
268
signum signal; /* signal to kill reader thread */
266
capability cap; /* connection capability */
267
struct circbuf *cb; /* input buffer */
268
signum signal; /* signal to kill reader thread */
269
269
} AmTcpIpCommRec;
272
typedef struct _osComm {
272
typedef struct _osComm {
275
ConnectionInputPtr input;
276
ConnectionOutputPtr output;
275
ConnectionInputPtr input;
276
ConnectionOutputPtr output;
278
278
ConnectionInputPtr inputFake;
279
279
ConnectionOutputPtr outputNext;
282
int family; /* connection family */
283
int number; /* connection number */
284
char status; /* connection status */
285
int size; /* input buffer size */
286
char *buffer; /* input buffer */
282
int family; /* connection family */
283
int number; /* connection number */
284
char status; /* connection status */
285
int size; /* input buffer size */
286
char *buffer; /* input buffer */
288
struct vc *vc; /* virtual circuit */
289
AmTcpIpCommRec tcp; /* TCP/IP connection info */
288
struct vc *vc; /* virtual circuit */
289
AmTcpIpCommRec tcp; /* TCP/IP connection info */
292
AuID auth_id; /* authorization id */
293
long conn_time; /* timestamp if not established, else 0 */
294
} OsCommRec, *OsCommPtr;
292
AuID auth_id; /* authorization id */
293
long conn_time; /* timestamp if not established, else 0 */
294
} OsCommRec, *OsCommPtr;
298
extern Bool amDebug; /* amoeba debug toggle */
298
extern Bool amDebug; /* amoeba debug toggle */
299
299
#endif /* XDEBUG */
300
extern char *AuServerHostName; /* audio server host name */
301
extern char *AuTcpServerName; /* TCP/IP server name */
302
extern ClientPtr grabClient; /* for grabs */
303
extern ClientPtr Clients[MAXTASKS]; /* All clients */
304
extern int maxClient; /* Highest client# */
305
extern int nNewConns; /* # of new clients */
300
extern char *AuServerHostName; /* audio server host name */
301
extern char *AuTcpServerName; /* TCP/IP server name */
302
extern ClientPtr grabClient; /* for grabs */
303
extern ClientPtr Clients[MAXTASKS]; /* All clients */
304
extern int maxClient; /* Highest client# */
305
extern int nNewConns; /* # of new clients */
307
extern semaphore init_sema; /* Initialize semaphore */
307
extern semaphore init_sema; /* Initialize semaphore */
308
308
#endif /* AMOEBA */