|
|
1.1 ! root 1: /* ! 2: ** CTLMOD.H -- control module header file ! 3: ** ! 4: ** This header file defines all the internal data structures ! 5: ** used by the control module. ! 6: ** ! 7: ** If something other than the control module or the initializer ! 8: ** has to include this, something is wrong! ! 9: ** ! 10: ** Compilation Flags: ! 11: ** xCM_DEBUG -- if set, certain code is compiled in that ! 12: ** does consistancy checks on the data structures ! 13: ** at opportune times. ! 14: ** xMONITOR -- if set, turns on performance evaluation ! 15: ** code. ! 16: ** xCTR1, xCTR2, xCTR3 -- if set, turns on various levels ! 17: ** of trace information. These must be properly ! 18: ** nested; if xCTR2 is set, xCTR1 *MUST* be set. ! 19: ** ! 20: ** Version: ! 21: ** @(#)ctlmod.h 7.1 2/5/81 ! 22: */ ! 23: ! 24: ! 25: ! 26: ! 27: ! 28: ! 29: /* include some other files */ ! 30: # include "state.h" ! 31: # include "proc.h" ! 32: # include <pv.h> ! 33: # include "pipes.h" ! 34: # include <func.h> ! 35: # include <pmon.h> ! 36: # include <setjmp.h> ! 37: ! 38: /* basic constants */ ! 39: # include <useful.h> ! 40: ! 41: ! 42: /* ! 43: ** Trace Flag settings. ! 44: */ ! 45: ! 46: # include <trace.h> ! 47: # define xCTR1 1 ! 48: # define xCTR2 1 ! 49: # define xCTR3 1 ! 50: # define xCM_DEBUG 1 ! 51: # define xMONITOR 1 ! 52: ! 53: /* ! 54: ** STRUCT CM -- the configuration structure. ! 55: */ ! 56: ! 57: struct _cm_t ! 58: { ! 59: char cm_myname[12]; /* my process name */ ! 60: state_t cm_state[CM_MAXST]; /* the state descriptions */ ! 61: proc_t cm_proc[CM_MAXPROC]; /* the process descriptions */ ! 62: int cm_myproc; /* my process id */ ! 63: char cm_input; /* the current input file */ ! 64: char cm_rinput; /* the reset input file */ ! 65: }; ! 66: ! 67: /* ! 68: ** STRUCT CTX -- the context structure. ! 69: ** ! 70: ** There is one of these around for every currently known ! 71: ** context. There is a pipe block associated with the ! 72: ** context, defined in call() or main(); only a pointer ! 73: ** is kept here so that the pipe block can be more efficiently ! 74: ** allocated off the stack. ! 75: ** ! 76: ** Some of the fields describe the NEXT block in the sequence. ! 77: ** These are: ctx_size, ctx_link. ! 78: ** ! 79: ** Ctx_cmark is useful ONLY when this block is not currently ! 80: ** active. ! 81: ** ! 82: ** Ctx_qt should be of type 'struct qthdr *'; it is 'char *' to ! 83: ** avoid including qtree.h. It points to the saved query ! 84: ** tree header after the first qt is read in. ! 85: ** ! 86: ** Ctx_pv MUST be last. ! 87: */ ! 88: ! 89: typedef struct _ctx_t ! 90: { ! 91: char *ctx_name; /* the printname of this proc */ ! 92: pb_t *ctx_ppb; /* the pb associated w/ this ctx */ ! 93: short *ctx_tvect; /* the trace vect for this ctx */ ! 94: int (*ctx_errfn)(); /* the error handling function */ ! 95: char *ctx_qt; /* pointer to saved Qt struct */ ! 96: struct fn_def *ctx_fn; /* pointer to fn descriptor */ ! 97: char *ctx_glob; /* ptr to saved global area */ ! 98: struct _ctx_t *ctx_link; /* a link to the next ctx */ ! 99: struct monitor *ctx_mon; /* ptr to monitor struct */ ! 100: short ctx_size; /* the size of the next ctx */ ! 101: bool ctx_init; /* set if between initp & call */ ! 102: bool ctx_new; /* set if this is a new context */ ! 103: char ctx_resp; /* process to respond to */ ! 104: int ctx_cmark; /* the Qbuf context mark */ ! 105: int ctx_pmark; /* the Qbuf parameter mark */ ! 106: jmp_buf ctx_jbuf; /* longjmp point on fatal error */ ! 107: long ctx_ofiles; /* files that should be kept open */ ! 108: int ctx_pc; /* the parm count */ ! 109: PARM ctx_pv[PV_MAXPC+1]; /* the parm vector */ ! 110: } ctx_t; ! 111: ! 112: extern ctx_t Ctx; /* the current context */ ! 113: extern char Qbuf[]; /* the free space buffer */ ! 114: extern int QbufSize; /* the size of Qbuf */ ! 115: extern struct _cm_t Cm; /* the system configuration */ ! 116: extern int Syncs[CM_MAXPROC]; /* the number of SYNCs expected */ ! 117: ! 118: ! 119: /* ! 120: ** ERROR NUMBERS ! 121: */ ! 122: ! 123: # define ERR_QBUF 100 /* Qbuf overflow */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.