|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 25344 (0x6300) Types: TextFile Names: »netmoninp«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt. └─⟦0364f57e3⟧ └─⟦e47b47727⟧ »hc8mon« └─⟦this⟧
*cm netmoninp part of the hcmonref manual* *pl 297,18,240,4,3**pn 0,0* *lw 170**ps 0**ld 8* *ns 1,2,PROCEDURE START INTERNAL PROCESS**np* Procedure Start Internal Process, 58 *sj* Start internal process (name address, result) w0 result (return) w1 w2 w3 name address (call) jd 1<11+58 name address: process name (call) *rj**nl2* Starts an internal process in another computer with a given name provided the mirror process is a child of the calling process in the state waiting for start by parent. Also started are all descendants of the child that were stopped previously along with it.*nl2* It is ensured that no process is started before its parent has been started. The processes are set in the running state.*nl2* The stop count of the calling process is unchanged. *sj* result = 0 internal process started 2 state of process does not permit start 3 process does not exist ; process is not an internal process ; 4 mirror process is not a child of calling process computer is disconnected 6 name format illegal PARAMETER ERROR: name area outside calling process. *rj* *ps* *ns 1,2,PROCEDURE STOP INTERNAL PROCESS**np* Procedure Stop Internal Process, 60 *sj* Stop internal process (name address, buffer address, result) w0 result (return) w1 w2 buffer address (return) w3 name address (call) jd 1<11+60 name address: process name (call) *rj**nl2* Initiates a stop of an internal process in another computer with a given name provided the mirror process is a child of the calling process. Master process cannot be stopped. Also stopped are all running descendants of the child. When the stop is initiated, the child is placed in the state waiting for stop by parent, while its descendants are set to waiting for stop by ancestor. A process can be in any state when the stop is initiated. If the process is waiting for a message, an answer an event, or a process function, its state is changed to waiting for stop, as explained above, but at the same time its instruction counter is decreased by two ensure that it will repeat the call of the correspon- ding monitor procedure when it is started again.*nl2* Finally, the stop procedure selects a message buffer, decreases the buffer claim of the calling process by one, and returns.*nl2* The monitor completes the stop operation as follows: Each time the stop count of one of the involved processes becomes zero (after the completion of high-speed input/output), the process is transferred to the state waiting for start by ancestor (or parent) and the stop count of its parent is decreased by one.If the calling process is the parent.*nl2* *ps* When all involved processes are stopped, the monitor delivers an answer in the selected message buffer to the calling process, which in turn receives it by calling either wait answer or wait event.*nl2* If the buffer claim of the calling process is exceeded the buffer address is zero: *sj* buffer address = 0 buffer claim exceeded > 0 selected buffer address result = 0 stop initiated and answer will arrive, depending on buffer address 3 process does not exist; process is not an internal process; process is not a child of calling process 6 name format illegal PARAMETER ERROR: name area outside calling process. *rj* *ps* *ns 1,2,PROCEDURE MODIFY INTERNAL PROCESS**np* Procedure Modify Internal Process, 62 *sj* Modify internal process (name address, register address, result) w0 result (return) w1 register address (call) w2 w3 name address (call) jd 1<11+62 name address: process name (call) register address: (call) + 0 working register 0 + 2 working register 1 + 4 working register 2 + 6 working register 3 + 8 exception register +10 instruction counter *rj**nl2* Initializes the register values of an internal process with a given name provided it is a child of the calling process in the state waiting for start by parent. *sj* result = 0 internal process modified 2 state of process does not permit modification 3 process does not exist; process is not an internal process; process is not a child of calling process; 6 name format illegal PARAMETER ERROR: name area or register area outside calling process; instruction counter outside child process. *ps* *ns 1,2,PROCEDURE REMOVE PROCESS**np* Procedure Remove Process, 64 *sj* remove process (name address, result) w0 result (return) w1 w2 w3 name address (call) jd 1<11+64 name address: process name (call) *rj**nl2* Removes an internal or external process from the monitor. Removal depends on the kind of the process:*nl2* PERIPHERAL PROCESS: The calling process must be a user of the pe- ripheral process and no other process must have reserved it. In this case the name of the peripheral process is removed, but the device itself remains described within the monitor. This is a privileged function.*nl2* AREA PROCESS and ENTRY LOCK PROCESS: The calling process must be a user of the area process. In this case the calling process is removed as a user and reserver of the area process, and its claim is increased by one. If the area process has no other users, the process description is also removed.*nl2* PSEUDO PROCESS:*nl* The pseudo process must have been created by the calling process. In this case the process is removed and the area claim of the calling process is increased by one. *ps* All message buffers are examined for pending messages sent to the pseudo process:*nl2**lm 30* *mt 1,a.* A buffer contains a message sent to, but not received by, the pseudo process: A dummy answer (receiver does not exist) is delivered, unless the message was regretted by the sending process (in which case the buffer is merely released).*nl2* *mt 1,b.* A buffer contains a message sent to and received by the pseudo process:*nl* In this case the procedure returns with result = 2.*nl2* INTERNAL PROCESS: The internal process must be child of the calling process in the state waiting for start by parent. In this case the child and its descendants are removed as follows: the process descriptions are removed one by one starting with the youngest descendants and the buffer claims, area claims, internal claims and backing storage claims are added to those of their parents.*nl2**lm 0* All area processes and entry lock processes used by the invelved internal processes are removed as described above.*nl2* All pseudo processes created by the involved internal process are removed.*nl2* In all peripheral processes the internal processes are removed as users and reservers, but the peripheral processes themselves are not removed. *ps* Finally all messages buffers are examined for pending messages or answers involving the processes to be removed. There are the following possibilities: *lm 30**nl* *mt 1, a.* A buffer contains a pending or received message to a removed process: A dummy answer (receiver does not exist) is delivered unless the message was regretted by the sending process. If the message was received, the buffer claim of the parent of the removed process is increased by one.*nl2* *mt 1, b.* A buffer contains a pending answer to a removed process: The buffer is released and the buffer claim of the parent of the removed process is increased by one*nl2* *mt 1, c.* A buffer contains pending or received message from the removed process to another process: The message is left undisturbed with an indication that the buffer is regretted. The buffer claim of the parent of the removed process is increased by one.*nl2* *mt 1, d.* A buffer contains an answer from the removed process to another process: The answer is left undisturbed.*nl2* *lm0* *sj* result = 0 process removed 1 function forbidden in calling process 2 state of internal process does not permit removal; Calling process is not a user of external process; message to pseudo process has been received but not answered 3 described process is not a child or does not exist 5 peripheral process reserved by another process 6 name format illigal PARAMETER ERROR: name area outside calling process. *rj**ps* *ns 1,2,PROCEDURE COPY**np* Procedure Copy, 70 *sj* copy (buffer address, first address, last address, result) w0 result (return) w1 first address (call), halfwords moved (return) w2 buffer address (call) w3 last address (call), characters moved (return) jd 1<11+70 *rj**nl2* The message buffer must have received by the calling process defining input or output. The procedure will move the corearea defined by first address and last address to or from the area defined by the buffer (according to the standard format of input/output message) according to the operation in the buffer. The number of words moved is the *nl* *sj* smallest of: number of words in corearea number of words in area described by the buffer result = 0 area copied 2 sender of buffer is stopped (w1 and w3 underfined at return) 3 buffer describes input or output outside senders area; message regretted; operation in buffer illegal (w1 and w3 undefined at return) *rj**nl2* PARAMETER ERROR: buffer address does not point at message buffer received by calling process; corearea outside calling process; last address < first address. *ps* *ns 1,2,PROCEDURE SET BACKING STORAGE CLAIMS**np* Procedure Set backing Storage Claims, 78 *sj* set backing storage claims (name address, document name address, claim list address, result) w0 result (return) w1 claims list address (call) w2 document name address (call) w3 name address (call) jd 1<11+78 name address: process name (call) Format of the claim list (call): claim list address + 0 : entry claim (key = 0) + 2 : segmet claim (key = 0) + 4 : entry claim (key = 1) ... claim list address + 4 Å max permkey + 0 : entry claim (key = maxpermkey) + 2 : segment claim (key = maxpermkey) document name address : document name (call) name address : process name (call) *rj**nl2* The procedure will transfer backing storage claims, corresponding to the document specified by the document name, between the calling process and the process specified by the process name (which must be a child of the calling process).*nl2* The number (negative or positive) of entries and segments specified by the claim list are subtracted form the claims of the calling process and added to the claims of the child process. *ps* If the number of segments specified is not an integral number of slices, it is increased to an integral number of slices.*nl2* Result 1 (=claims exceeded is returned if either the claims of the calling process or the claims of the child sould become negative by the transfer; in this case nothing is changed in the claims. *sj* result = 0 backing storage claims set 1 claims exceeded 2 backing storage document with given name not found 3 process does not exist; process is not an internal process; process is not a child of calling process 6 name format (of docname or child name) illegal PARAMETER ERROR: claim list area, document area or process name area outside calling process. *rj* *ps* *ns 1,2,8. ADMINISTRATION OF MESSAGE BUFFERS**np* 8.1. MESSAGE BUFFER POOL *sj* The message buffer pool is described in the following storage locations within the monitor: absolute address contents: 82 <next message buffer> 84 <previous message buffer> 86 <message pool start> 88 <message pool end> 90 <message buffer size> *rj**nl2* Next and PREVIOUS MESSAGE BUFFER are the head of the queue of available message buffers that are linked cyclically.*nl2* MESSAGE POOL START and END are the first and last addresses of the contiguous storage area containing all message buffers.*nl2* MESSAGE BUFFER SIZE is the number of bytes per message buffer (at present = 32 halfwords).*nl2* *ps* *ns 1,2,8.2. MESSAGE BUFFER FORMAT**np* *sj* A message buffer has the following format: buffer address: contents: - 8 <buffer address other computer> - 6 <sender/receiver identification> - 4 <process description other computer> - 2 <message flag (save w2 in send message)> + 0 <next buffer> + 2 <previous buffer> + 4 <receiver or answer type> + 6 <sender> + 8 <message or answer> .... .... +22 <message or answer> *rj* *nl2* NEXT and PREVIOUS BUFFER are the link that connects the buffer cyclically to other buffers in its present queue.*nl2* RECEIVER and SENDER define the state of the buffer as described in Section 8.3. Theese adresses are within this computer.*nl2* MESSAGE and ANSWER are eight words exchanged between two communicating processes.*nl2* SENDER/RECEIVER IDENTIFICATION gives the computer number of the sending computer in the first byte and the computer number of the receiving computer in the second byte. If zero this buffer is used for communication within this computer. *nl2* PROCESS ADDRESS OTHER COMPUTER gives the process description address of the real address in the other computer for the process involved in this communication. If negative this is a mirror message buffer or a message generated by monitor to a master process (=-1). *nl2* BUFFER ADDRESS OTHER COMPUTER gives the buffer address of the message buffer in the other computer. *nl2* *sj* Input/output messages have a standard format: message answer +8 operation, mode status word +10 first storage address number of bytes +12 last storage address number of charecters +14 segment number Input is signalled by: operation = 3 Output is signalled by: operation = 5 *rj* *ps* *ns 1,2,8.3 MESSAGE BUFFER STATES.**np* The possible states of a message buffer is defined by the sign of the receiver and sender address: *sj* sender receiver state 0 0 buffer available + + message pending (i.e. buffer claim of receiver has not been decreased on account of this message) + - message received (i.e. buffer claim of receiver has been decreased on account of this message) - + not possible - - message received, but regretted by sender The answer type is coded as follows: 1 normal answer 2 dummy answer, message rejected 3 dummy answer, message unintelligible 4 dummy answer, receiver malfunction 5 dummy answer, receiver does not exist *rj**nl* THE SENDER and RECEIVER ADDRESSES are the process description addresses of the two processes that communicate in the buffer.*nl2* In pending answers the receiver address has been replaced by the result parameter of the procedure wait answer. *ps* *sj* The transitions between these states are clarified by the following scheme: after calling buffer state: queue situation: send message message pending buffer in receiver queue wait message message received buffer in no queue send answer answer pending buffer in sender queue wait answer buffer available buffer in pool wait event message :received buffer in receiver queue answer: pending buffer in receiver queue get event message: received buffer in no queue answer: available buffer in pool *rj* *ps* *ns 1,2,8.4 ADMINISTRATION OF PROCESS DESCRIPTIONS**np* The format of a process description depends on the kind of the process; common to all process descriptions, however, is a head defining the kind, name and base of the process:*nl* *sj* process description address contents: -4 <lower base> -2 <upper base> +0 <kind> +2 <name> +10 <other parameters> *rj**nl2* A process is considered removed if the first word of its name is zero.*nl* The monitor has a name table containing the base addresses of all process descriptions (including those of removed processes). The name table is described in the following storage locations.*nl* *sj* absolute address contents: 72 <name table start> 74 <first device in name table> 76 <first area in name table> 78 <first internal in name table> 80 <name table and> *rj* *nl2* NAME TABLE START is the address of the first name table entry. This and the following name table entries contain process description addresses of special processes, used during debugging of the system, and ecternal processes corresponding to pure interrupt sources. *ps* FIRST DEVICE in name table is the address of the name table entry that contains the process description address of peripheral device number 0. The following name table entries contain process description addresses of peripheral devices 1,2,3 etc.*nl2* FIRTS AREA in name table is the address of the name table entry that contains the process description address of the first area process. The following name table entries contain the rest of the area process description addresses.*nl2* FIRST INTERNAL in name table is the address of the name table entry that contains the process description address of the first internal process. The following name table entries contain the rest of the internal process description addresses.*nl2* NAME TABLE END is the address of the last name table entry. This does not contain a process description address.*nl* *ps* *ns 1,2,8.5 FORMAT OF INTERNAL PROCESS DESCRIPTION**np* An internal process is described in a table where the first column is for a real internal process or master process and the second are for master mirror and mirror processes. All claims in column two refers to the other computer. All register values in column two are working variables for monitor. *sj* relative address: contents real process mirror process -12 0 reference process -10 process type (even) process type (odd) -8 0 master (mirror) process -6 computer number<12+internal claim other -4 lower base of process name -2 upper base of process name 0 kind +2 to +8 process name +10 stop count, state 0, waiting for start +12 identification bit 0 +14 next message buffer in event queue +16 previous message buffer in event queue +18 next process in time slice queue +20 previous process in time slice queue +22 first address of core area +24 top address of core area +26 buffer claim, area claim +28 internal claim, function mask +30 priority +32 mode +34 interrupt mask +36 interrupt address +38 escape address +40 working location +42 working location +44 working location +46 working register +48 working location +50 parent description address +52 time quantum, unit in 0,1 msec working location +54 +56 run time (double word), unit in 0,1 msec working location +58 +60 start run (double word), unit in 0,1 msec *rj**ps* *sj* +62 +64 start waiting time (double word), unit in 0,1 msec +66 wait address +68 lower catalog base +70 upper catalog base +72 lower max base + 74 upper max base +78 upper standard base +80 working register 0 +82 working register 1 +84 working register 2 +86 working register 3 +88 status +90 ic +92 cause +94 sb +96 cpa +98 base +100 lower write limit +102 upper write limit *rj**nl* KIND is 0 for internal process.*nl2* NAME is a textstring of 12 ISO characters beginning with a small letter followed by a maximum of 10 small letters or digits terminated by NULL characters.*nl2* STOP COUNT defines the number of internal and external processes modifying the storage area of the present process, allways zero for a mirrorprocess. *ps* *sj* STATE has the following value: 2.0000 0000 mirrorprocess 2.0100 1000 running 2.0000 1000 running after error 2.1011 0000 waiting for stop by parent 2.1010 0000 waiting for stop by ancestor 2.1011 1000 waiting for stop by parent 2.1010 1000 waiting for stop by ancestor 2.1100 1100 waiting for process function or master 2.1000 1101 waiting for message 2.1000 1110 waiting for answer 2.1000 1111 waiting for event *rj**nl2* IDENTIFICATION BIT is a word in which a single bit is one. it is used to check the access to external processes (see Section 8.6.. Not used in basic version.*nl2* NEXT and PREVIOUS EVENT are the head of the event queue that links all pending messages and answers cyclically to the process.*nl2* FIRST and TOP ADDRESS point to the first storage word and the large storage word +2 of the internal process in the computer having the actual internal process.*nl2* BUFFER CLAIM, AREA CLAIM and INTERNAL CLAIM define the number of message buffers, area process descriptions, and internal process descriptions the process was created with in the other computer. FUNCTION MASK defines the function bits the calling process must have in order to execute some monitor procedures.*nl2* MODE defines the rum mode for the created process. 0 indicates monitor mode, 1 indicates user mode.*nl2* INTERRUPT MASK is the value for the interrupt mask register used during execution of the process.*nl2* PARENT DESCRIPTION ADDRESS is the process description address of the process that has created the present process.*nl2* START TIME is the value of the clock when the process was created. *ps* WAITING TIME is not used.*nl2* WAIT ADDRESS is a working location used by the monitor.*nl2* CATBASE, MAXBASE, STDBASE: Not used in basic version.*nl* *rj* *ld8**ns 1,4,9. IMPLEMENTATION DETAILS* -------------------------*ld16* *sj* 8.1. Use of a and b-names in monitor b150: 0 ; master process address b151: 0 ; computer number this computer a400= ; translation mask 1<16 ; master process 1<15 ; dma process 1<14 ; transmitter/receiver process 1<13 ; active mirror process (reference process) claims: a428= ; other computers in the system a429= ; internal processes in other computers=mirror processes used in message buffer: a425=-8 ; message buffer address in other computer a426=-6 ; receiver/sender computer identification a427=-4 ; process description address in other computer a message buffer is 32 words used in internal process: a430=-12 ; reference process (for a passive process) a431=-10 ; process type a432=-8 ; process description of master (mirror) process a433=-6 ; computer number<12+internal claim other computer process type: 0 real internal process 2 master process of this computer 3 master mirror process for a master process in other computer 5 mirror process for a real internal process in other computer ; in this computer *ef* ▶EOF◀