Files
2024-02-19 00:25:23 -05:00

111 lines
3.9 KiB
C

/****************************************************************************/
/* */
/* (c) Copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands */
/* */
/* This product is part of the Amoeba distributed operating system. */
/* */
/* Permission to use, sell, duplicate or disclose this software must be */
/* obtained in writing. Requests for such permissions may be sent to */
/* */
/* */
/* Dr. Andrew S. Tanenbaum */
/* Dept. of Mathematics and Computer Science */
/* Vrije Universiteit */
/* Postbus 7161 */
/* 1007 MC Amsterdam */
/* The Netherlands */
/* */
/****************************************************************************/
struct trans {
char TS_state; /* see below */
char TS_flags; /* several flags - see below */
char TS_clident; /* ident number for client */
char TS_svident; /* ident number for server */
char TS_ident; /* transaction identifier */
char TS_seq; /* fragment sequence number */
char TS_count; /* max. number timer may expire */
char TS_signal; /* signal being sent to the server */
unshort TS_addr; /* network address of this task */
unshort TS_timer; /* timer, decremented every sweep */
unshort TS_cltim; /* client crash timer */
address TS_client; /* if serving: who's the client */
address TS_server; /* if in trans: who's the server */
port TS_portcache; /* this port was used the last time */
header *TS_rhdr; /* saved param in getreq or trans */
header *TS_xhdr; /* saved param in putrep or trans */
bufptr TS_rbuf; /* receiver buffer */
bufptr TS_xbuf; /* transmitter buffer */
unshort TS_rcnt; /* size of rbuf */
unshort TS_xcnt; /* size of xbuf */
unshort TS_offset; /* offset in buffer */
unshort TS_maxloc; /* max. location time in seconds */
long TS_totloc; /* total location time in ticks */
long TS_totsvr; /* total server time in ticks */
#ifdef BUFFERED
address TS_sender; /* task that sent the buffer */
char *TS_savehdr; /* saved header pointer */
buffer TS_buffer; /* buffer */
unshort TS_bufcnt; /* buffer size */
unshort TS_what; /* REQUEST or REPLY */
#endif
} tk_trans;
#ifdef TRANS
#define ts_state tk_trans.TS_state
#define ts_flags tk_trans.TS_flags
#define ts_clident tk_trans.TS_clident
#define ts_svident tk_trans.TS_svident
#define ts_ident tk_trans.TS_ident
#define ts_seq tk_trans.TS_seq
#define ts_timer tk_trans.TS_timer
#define ts_count tk_trans.TS_count
#define ts_signal tk_trans.TS_signal
#define ts_addr tk_trans.TS_addr
#define ts_cltim tk_trans.TS_cltim
#define ts_client tk_trans.TS_client
#define ts_server tk_trans.TS_server
#define ts_portcache tk_trans.TS_portcache
#define ts_rhdr tk_trans.TS_rhdr
#define ts_xhdr tk_trans.TS_xhdr
#define ts_rbuf tk_trans.TS_rbuf
#define ts_xbuf tk_trans.TS_xbuf
#define ts_rcnt tk_trans.TS_rcnt
#define ts_xcnt tk_trans.TS_xcnt
#define ts_offset tk_trans.TS_offset
#define ts_maxloc tk_trans.TS_maxloc
#define ts_totloc tk_trans.TS_totloc
#define ts_totsvr tk_trans.TS_totsvr
#define ts_sender tk_trans.TS_sender
#define ts_savehdr tk_trans.TS_savehdr
#define ts_buffer tk_trans.TS_buffer
#define ts_bufcnt tk_trans.TS_bufcnt
#define ts_what tk_trans.TS_what
/* possible values of ts_state */
#define IDLE 0
#define SENDING 1
#define DONE 2
#define ACKED 3
#define NACKED 4
#define FAILED 5
#define WAITBUF 6
#define RECEIVING 7
#define ABORT 8
#define MEMFAULT 9
/* possible flags in ts_flags */
#define LOCATING bit(0) /* blocked in trans locating a port */
#define PUTREQ bit(1) /* blocked in trans sending a request */
#define GETREQ bit(2) /* blocked in getreq */
#define PUTREP bit(3) /* blocked in putrep */
#define GETREP bit(4) /* blocked in trans getting a reply */
#define SERVING bit(5) /* running between getreq and putrep */
#else
#define tk_trans tk_dummy /* other modules must not touch it */
#endif