+++ /dev/null
-#include "queue.h"
-
-
-/* Process management definitions : */
-
-#define MAXPROCESS 64 /* maximum number of processes on one node */
-#define MAXMSGQUEUE 16 /* maximum number of waiting messages */
-
-#define MSGLENGTH 256 /* message length defined by me (PS) */
-
-
-/* Process state : */
-
-#define GENERATING 0 /* during generation of process object */
-#define STOPPED 1 /* non-active process (suspended by STOP) */
-#define EXECUTING 2 /* active process (ready to execute) */
-#define WAITFORNEW 3 /* waiting for NEW of another process */
-#define WAITFORRPC 4 /* waiting for remote procedure call */
-#define ACCEPTING 5 /* during execution of ACCEPT statement */
-#define WAITASKPRO 6 /* waiting for process prototype */
-
-/* Process descriptor : */
-
-typedef struct
-{
- bool used; /* TRUE if in use by some process */
- word mark; /* process mark for proper detecting of none */
- int status; /* process state */
- word prot; /* process prototype number */
- memory M; /* pointer to memory array */
- union value param[ MAXPARAM ];
- word ic; /* instruction counter */
- word trlnumber; /* trace line number */
- word lower; /* first word of object area */
- word upper; /* last word in memory */
- word lastused; /* last word used by objects */
- word lastitem; /* first word used by dictionary */
- word freeitem; /* head of free dictionary item list */
- word headk; /* head of killed object list for size > 2 */
- word headk2; /* head of killed object list for size = 2 */
- word prochead; /* am of process object */
- virtaddr procref; /* process object virtual address */
- virtaddr template; /* remote process or procedure template */
- word c1, c2; /* pointers to current object */
- virtaddr backobj; /* adress of object just left */
- word blck1, blck2; /* used for LBLOCK1, LBLOCK2, LBLOCK3 */
- queue msgqueue; /* queue of messages for this process */
- queue rpcwait; /* queue of disabled RPC messages */
- stack rpcmask; /* stack of set of enabled remote procedures */
- bool force_compactification; /* next allocate will forace compact... */
- word *hash; /* table of pointers to processes in process */
- word hash_size;
-} procdescr;
-
-
-/* Message type : */
-
-#define ERRSIG 0 /* error signal */
-#define RESUME 1 /* resume request */
-#define CREATE 2 /* create new process request */
-#define CREACK 3 /* create process acknowledge */
-#define KILLPR 4 /* kill process */
-#define RPCALL 5 /* remote procedure call request */
-#define RPCACK 6 /* remote procedure return */
-#define ASKPRO 7 /* ask for process prototype */
-#define PROACK 8 /* answer with process prototype */
-
-typedef struct {
- word node;
- word pix;
- word mark;
-} procaddr;
-
-struct ctrlmsg
-{
- procaddr sender; /* address of the sender and */
- procaddr receiver; /* receiver of the message */
- int type; /* message type */
- int par; /* prototype or error signal number */
-};
-
-#define MAXPROCPAR (MSGLENGTH-sizeof(struct ctrlmsg))
-
-typedef struct
-{
- struct ctrlmsg control;
- char params[ MAXPROCPAR ];
-} message;
-
-/* Direction of copying of parameters (for moveparams()) : */
-
-#define LOADPAR 0
-#define SAVEPAR 1
-
-typedef char *mask;
-
-extern procdescr process[]; /* process descriptor table */
-extern procdescr *thisp; /* pointer to current process descriptor */
-extern word thispix; /* current process index */
-extern queue ready; /* Round-Robin queue of ready processes */
-extern bool network; /* TRUE if operating in D-Link network */
-extern message globmsgqueue[]; /* queue of waiting messages */
-extern int msgready; /* number of waiting messages */
-extern int msghead, msgtail; /* pointers to message queue */
-extern word ournode; /* this machine node number */
-extern word console; /* console node number */
-extern bool remote; /* TRUE if remote node */
-extern bool reschedule; /* TRUE if rescheduling is mandatory */
-
-#if OS2
-extern PGINFOSEG ginf; /* pointer to Global Info Segment */
-#endif
-
-
-
-#ifndef NO_PROTOTYPES
-void obj2mess(word *,virtaddr *,procaddr*);
-void mess2obj(procdescr *,procaddr *,virtaddr*);
-bool isprocess(virtaddr *);
-void hash_find(procaddr *,virtaddr *);
-void hash_create(procdescr *,int);
-void hash_set(procaddr *,word);
-#else
-void obj2mess();
-void mess2obj();
-bool isprocess();
-void hash_find();
-void hash_create();
-void hash_set();
-#endif
-