top - download
⟦d8a9e152c⟧ Wang Wps File
Length: 17534 (0x447e)
Types: Wang Wps File
Notes: CPS/SDS/029
Names: »1731A «
Derivation
└─⟦20fb15aa2⟧ Bits:30006084 8" Wang WCS floppy, CR 0130A
└─ ⟦this⟧ »1731A «
WangText
…11……00……00……00……00…B…02……00……00…B
B…05…B…06……0a……0a……0a……0e……0a…
…0a… …86…1 …02… …02… …02…
…02…CPS/SDS/029
…02…820514…02……02…
SYSTEM STATUS AND CONTROL
DETAILED DESIGN SPECIFICATION…02……02…CAMPS
4.2.1 O̲N̲L̲I̲N̲E̲ ̲D̲I̲A̲G̲N̲O̲S̲T̲I̲C̲S̲
4.2.1.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The OLD functions are decomposed as defined in fig.
4.2.1.1-1.
OLD sumchecks the program part of the KERNEL periodically
and on request from the supervisor. For supervisor
request OLD answers OK if the sumcheck is successful,
otherwise the KERNEL shuts down itself and no answer
is sent. (The system is closed down).
Fig. 4.2.1.1-1
4.2.1.1.1 I̲n̲i̲t̲i̲a̲l̲i̲z̲a̲t̲i̲o̲n̲
A request is sent to the timer monitor in CSF to periodically
invoke the OLD.
4.2.1.1.2 S̲e̲r̲v̲e̲ ̲I̲n̲p̲u̲t̲ ̲Q̲u̲e̲u̲e̲
During operation OLD receives:
- time-out from TMON
- supervisor requests
- COPSY close-down command
in its input queue OLD ̲Q.
4.2.1.1.2.1 C̲h̲e̲c̲k̲ ̲C̲o̲m̲m̲a̲n̲d̲
When OLD has received a command, it checks this.
4.2.1.1.3 C̲h̲e̲c̲k̲s̲u̲m̲ ̲K̲e̲r̲n̲e̲l̲
4.2.1.1.3.1 H̲a̲n̲d̲l̲i̲n̲g̲ ̲o̲f̲ ̲T̲i̲m̲e̲-̲O̲u̲t̲
The reception of a time-out makes OLD execute a checksumming
of the KERNEL program by calling the monitor procedure
in the KERNEL: Checksum-Kernel.
4.2.1.1.3.2 R̲e̲c̲e̲p̲t̲i̲o̲n̲ ̲o̲f̲ ̲S̲u̲p̲e̲r̲v̲i̲s̲o̲r̲ ̲R̲e̲q̲u̲e̲s̲t̲
The reception of a supervisor request makes OLD execute
the Checksum Kernel procedure.
4.2.1.1.4 S̲e̲n̲d̲ ̲R̲e̲p̲l̲y̲
On supervisor request OLD sends an OK reply if the
check summing of the kernel is successful. Otherwise
no reply is sent.
4.2.1.1.5 R̲e̲c̲e̲p̲t̲i̲o̲n̲ ̲o̲f̲ ̲C̲l̲o̲s̲e̲ ̲D̲o̲w̲n̲
When OLD receives a close down command, it sends a
CANCEL ̲TIME ̲OUT to TMON and after it has received a
reply from TMON, it answers COPSY and awaits further
COPSY commands.
4.2.1.1.6 C̲o̲m̲m̲o̲n̲ ̲S̲S̲C̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲
4.2.1.1.6.1 E̲r̲r̲o̲r̲ ̲F̲i̲x̲-̲U̲p̲
OLD is a process of DUMMY type.
OLD recognizes the following SW error types.
1) E̲x̲t̲e̲r̲n̲a̲l̲ ̲S̲W̲ ̲E̲r̲r̲o̲r̲s̲
These errors relate to validity checks in the input
queue.
2) I̲n̲t̲e̲r̲n̲a̲l̲ ̲S̲W̲ ̲E̲r̲r̲o̲r̲s̲
There are two kind of internal errors.
- Errors resulting from system calls
- SW errors in OLD
3) C̲h̲e̲c̲k̲s̲u̲m̲ ̲E̲r̲r̲o̲r̲s̲
Checksun Errors make the KERNEL retire the system
and a switch-over is performed.
In NORMAL mode OLD retires for all kinds of errors.
In AT ̲RISK mode OLD performs DUMMY operation for internal
errors, and sends NOT ̲OK REPLY for external.
4.2.1.1.6.2 V̲a̲l̲i̲d̲i̲t̲y̲ ̲C̲h̲e̲c̲k̲s̲
Refer to section 4.2.1.1.1.1.
4.2.1.2 S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲
The OLD subpackage functions are implemented in one
process, which handles on-line diagnostics.
The subpackage consists of the modules:
- OLD ̲MAIN ̲PRG
- EXEC ̲CHECK ̲SUMMING
- CLOSE ̲DOWN ̲OLD
and the common procedures
- SERVE ̲INPUT
- CHECK ̲COMMAND
- REPLY ̲SENDER
- ERROR ̲OLD
The module OLD ̲MAINPRG contains the procedure OLD ̲MAINPRG
and INIT ̲OLD, meanwhile CLOSE ̲DOWN ̲OLD consists of
CLOSE ̲DOWN ̲OLD and EMPTY ̲OLDQ.EXEC ̲CHECK ̲SUMMING is
TBD.
The functions defined in sections 4.2.1.1 are allocated
to the procedures as follows:
- Section 4.2.1.1.1 to INIT ̲OLD
- Section 4.2.1.1.2 to SERVE ̲INPUT
- Section 4.2.1.1.2.1 to CHECK ̲COMMAND
- Section 4.2.1.1.3 to EXEC ̲CHECKSUMMING
- Section 4.2.1.1.4 to REPLY ̲SENDER
- Section 4.2.1.1.5 to CLOSE ̲DOWN ̲OLD and
EMPTY ̲OLDQ
- Section 4.2.1.1.6 to ERROR ̲OLD
4.2.1.3 D̲a̲t̲a̲ ̲F̲l̲o̲w̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲L̲o̲g̲i̲c̲
For data flow see fig. 4.2.1.3-1
For control logic see fig. 4.2.1.3-2
Figs. 4.2.1.3-1/4.2.1.3-2
4.2.1.4 M̲o̲d̲u̲l̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
4.2.1.4.1 O̲L̲D̲ ̲M̲A̲I̲N̲P̲R̲C̲
4.2.1.4.1.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The mainprocedure first initializes the process. Hereafter
it awaits the commands to be executed.
4.2.1.4.1.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
N/A
4.2.1.4.1.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
OLD ̲MAINPRC consists of the two procedures
- OLD ̲MAINPRC
- INIT ̲OLD
OLD ̲MAINPRC calls the modules/procedures
- SERVE ̲INPUT
- EXEC ̲CHECKSUMMING
- REPLY ̲SENDER
- CLOSE ̲DOWN ̲OLD
- ERROR ̲OLD
and the CSF-procedures
- DISMANTLE
- REQUEST ̲TIMEOUT
4.2.1.4.1.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
OLDQ see DBD
OLDQUEUE see 4.2.1.5
TMON ̲REQUEST see 4.2.1.5
OLDQEL see 4.2.1.5
COMMAND see 4.2.1.5
CC see 4.2.1.5
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
OLDQ
OLDQUEUE.MAIN ̲QUEUE (m)
OLDQUEUE.SUB ̲QUEUE (m)
TMON ̲REQUEST.QUEUE.MAIN ̲QUEUE (m)
TMON ̲REQUEST.QUEUE.SUB ̲QUEUE (m)
TMON ̲REQUEST.TIMEOUT (m)
TMON ̲REQUEST.FORMAT (m)
TMON ̲REQUEST.TIME.PERIOD (m)
TMON ̲REQUEST.EVENT ̲ID (m)
OLDQEL
COMMAND
CC
c) I̲n̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
cc: INTEGER
4.2.1.4.1.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
a) O̲L̲D̲ ̲M̲A̲I̲N̲P̲R̲C̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲:
OLD ̲MAINPRC first call INIT ̲OLD for initialization.
In a forever loop, the commands are received and
executed.
F̲l̲o̲w̲g̲r̲a̲m̲
See fig. 4.2.1.4.1.5.a-1
b) P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲I̲N̲I̲T̲ ̲O̲L̲D̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
INIT ̲OLD first sets the parameters
in OLDQUEUE and TMON ̲REQUEST. Thereafter
it sends a request to TMON in CSF
for periodically invoking.
F̲l̲o̲w̲g̲r̲a̲m̲
See fig. 4.2.1.4.1.5.b-1
PROCESS OLD
INIT ̲OLD
LOOP ̲FOREVER
SERVE ̲INPUT(TRUE)(OLDQEL, COMMAND, CC)
CASE COMMAND OF
OLD ̲CLOSE ̲DOWN?
CLOSE ̲DOWN ̲OLD
SUPERVISOR ̲REQUEST?
EXEC ̲CHECKSUMMING(KERNEL)
REPLY ̲SENDER (OLDQEL, OK)
TMON ̲REQUEST ?
EXEC ̲CHECKSUMMING (KERNEL)
TMON ̲CANCELLED ? ERROR ̲OLD (COMMAND
̲ERROR, OK)
ILLEGAL ?
END CASE COMMAND
DISMANTLE (OLDQEL) (CC)
END LOOP FOREVER
END PROCESS OLD
Fig. 4.2.1.4.1.5.a-1
PROCEDURE INIT ̲OLD
BEGIN
OLDQUEUE.MAIN ̲QUEUE = OLD ̲Q
OLDQUEUE.SUB ̲QUEUE = 0
TMON ̲REQUEST.QUEUE.MAIN ̲QUEUE = OLD ̲Q
TMON ̲REQUEST.QUEUE.SUB ̲QUEUE = TIM ̲Q
TMON ̲REQUEST.TIMEOUT = PERIODIC
TMON ̲REQUEST.FORMAT = HOURS
TMON ̲REQUEST ̲TIME.PERIOD = 6
(TMON ̲REQUEST ̲EVENT ̲ID = 0
CASE REQUEST ̲TIMEOUT(TMON ̲REQUEST) (CC)
OF
ERROR ? ERROR ̲OLD(OTHER ̲SYSTEM ̲CALL
̲ERROR, CC)
OK ?
END CASE REQUEST ̲TIMEOUT
END PROCEDURE INIT ̲OLD
Fig. 4.2.1.4.1.5.b-1
4.2.1.4.2 E̲X̲E̲C̲ ̲C̲H̲E̲C̲K̲S̲U̲M̲M̲I̲N̲G̲
4.2.1.4.3 C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲ ̲O̲L̲D̲
4.2.1.4.3.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
First CLOSE ̲DOWN ̲OLD empties the input
queue OLD ̲Q. Thereafter it sends a CANCEL
̲TIME ̲OUT to the TIME ̲MONITOR.
After it has sent an ACK to COPSY, it
awaits further COPSY ̲COMMAND.
4.2.1.4.3.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) CLOSE ̲DOWN ̲OLD
b) CLOSE ̲DOWN ̲OLD (R6)
R̲e̲g̲i̲s̲t̲e̲r̲s̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
NA
M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
CLOSE ̲DOWN ̲OLD contains the two procedures
- CLOSE ̲DOWN ̲OLD
- EMPTY ̲OLDQ
CLOSE ̲DOWN ̲OLD calls the modules/procedures
- SERVE ̲INPUT
- REPLY ̲SENDER
- ERROR ̲OLD
and the CSF procedures
- CANCEL ̲TIMEOUT
- DISMANTLE
D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
OLDQUEUE see sec. 4.2.1.5
COMMAND see
sec.
4.2.1.5
OLDQEL see
sec.
4.2.1.5
CC see
sec.
4.2.1.5
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
OLDQUEUE.SUBQUEUE (m)
OLDQEL
COMMAND
CC
c) I̲n̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
OLDQEL1: QEL ̲REFERENCE
used as reference to a received QEL
FLAG: (OK, VALIDATION ̲NOT ̲OK, EXECUTION
̲NOT ̲OK)
used for reply to COPSY.
4.2.1.4.3.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
4.2.1.4.3.5.1 C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲ ̲O̲L̲D̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
First CLOSE ̲DOWN ̲OLD calls EMPTY ̲OLDQ.
Thereafter it cancels the periodic timeout,
which is sent from TMON. After it has
received a reply from TMON, it waits for
further COPSY command.
F̲l̲o̲w̲g̲r̲a̲m̲
See fig. 4.2.1.4.3.2.1-1
4.2.1.4.3.5.2 E̲M̲P̲T̲Y̲ ̲O̲L̲D̲Q̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Received QEL from OLDQ and dismantle this.
If the QEL contains a supervisor request,
a reply is sent to the supervisor.
F̲l̲o̲w̲g̲r̲a̲m̲
See fig. 4.2.1.4.3.5.2-1
PROCEDURE CLOSE ̲DOWN ̲OLD
BEGIN
EMPTY ̲OLD
OLDQUEUE.SUBQUEUE = TIM ̲Q
CASE CANCEL ̲TIME ̲OUT (TMON ̲REQUEST)(CC)
ERROR ?
REPLY ̲SENDER(OLDQEL,EXECUTION ̲NOT ̲OK)
OLD ̲QUEUE.SUBQUEUE = CMD ̲Q
SERVE ̲INPUT(TRUE)(OLDQEL,COMMAND,CC)
OK ?
SERVE ̲INPUT (TRUE)(OLDQEL1, COMMAND,
CC)
COMMAND = TIMEOUT ̲EVENT ?
DISMANTLE (OLDQEL1)
SERVE ̲INPUT(TRUE)(OLDQEL1, COMMAND,
CC)
COMMAND = TIMEOUT ̲CANCELLED ? FLAG
= OK
ERROR ̲OLD(COMMAND ̲ERROR,OK)
FLAG = EXECUTION ̲NOT ̲OK
END CASE CANCEL ̲TIME ̲OUT
DISMANTLE (OLDQEL) (CC)
OLDQUEUE.SUBQUEUE = CMD ̲Q
SERVE ̲INPUT(TRUE)(OLDQEL, COMMAND, CC)
END PROCEDURE CLOSE ̲DOWN ̲OLD
Fig. 4.2.1.4.3.5.1-1
PROCEDURE EMPTY ̲OLDQ
BEGIN
LOOP empty OLDQ
SERVE ̲INPUT (FALSE) (OLDQEL1, COMMAND,
CC)
CASE CC OF
OK ?
COMMAND = SUPERVISOR ̲REQUEST ?
REPLY ̲SENDER(OLDQEL1, OK)
DISMANTLE (OLDQEL1)(CC)
QUEUE ̲EMPTY ? EXIT EMPTY ̲OLDQ
OTHERWISE ? DISMANTLE (OLDQEL1)(CC)
END ̲CASE CC
END LOOP empty OLDQ
END ̲PROCEDURE ̲EMPTY ̲OLDQ
Fig. 4.2.1.4.3.5.2-1
4.2.1.5 C̲o̲m̲m̲o̲n̲ ̲O̲L̲D̲ ̲D̲a̲t̲a̲
4.2.1.5.1 D̲a̲t̲a̲ ̲T̲y̲p̲e̲s̲
QUEUE ̲REFERENCE see DBD
QEL ̲REFERENCE see DBD
QEL ̲ATTRIBUTES see DBD
COMMAND ̲TYPE = (OLD ̲CLOSE ̲DOWN,SUPERVISOR
̲
REQUEST, TMON ̲REQUEST, TMON ̲CANCELLED,
ILLEGAL)
ERROR ̲TYPE = (RECEIVE ̲FIRST ̲QEL ̲ERROR,
OTHERS ̲SYSTEM ̲CALL ̲ERROR, COMMAND ̲ERROR)
REQUEST ̲TIME see DBD
4.2.1.5.2 V̲a̲r̲i̲a̲b̲l̲e̲
OLDQUEUE: QUEUE ̲REFERENCE
DBD
used as reference to OCD ̲Q
OLDQEL, QEL: QEL ̲REFERENCE
DBD
used as reference
to received QEL
OLDQEL ̲ATTRIBUTES: QEL ̲ATTRIBUTES
DBD
keeps
the attributes
of a received
QEL
COMMAND: COMMAND ̲TYPE
specified the main and subtype
of a received
QEL
TMON ̲REQUEST: REQUEST ̲TIME
DBD
used to specify the wanted
periodically
invoke from TMON
OLDSUBQUEUE ̲NO: INTEGER
CC: Completion code, depending on the
system call.
OLD ̲SUBQUEUE ̲NO: INTEGER
used in the system call RECEIVE ̲FIRST
̲QEL
4.2.1.6 C̲o̲m̲m̲o̲n̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲
4.2.1.6.1 S̲E̲R̲V̲E̲ ̲I̲N̲P̲U̲T̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
A parameter indicates if SERVE ̲INPUT shall
wait or not when it receives a QEL from
OLDQ. After it has received a QEL, it
checks that the maintype and subtype of
the QEL is one of the wanted types.
I̲n̲t̲e̲r̲f̲a̲c̲e̲
a) SERVE ̲INPUT (WAIT: BOOLEAN)
(OLDQEL: QEL ̲REFERENCE, COMMAND:
COMMAND ̲TYPE,
CC: INTEGER)
b) SERVE ̲INPUT (R0, R2, R4, R6, R7)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 WAIT
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 COMMAND
R2 OLDQEL
R7 CC: (OK, QLE ̲PROFILE ̲CHECK,QUEUE ̲EMPTY,
CANCELLED)
C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
SERVE ̲INPUT calls the procedures
- CHECK ̲COMMAND
- ERROR ̲OLD
and the CC CSF procedures
- RECEIVE ̲FIRST ̲QEL
D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
OLDQUEUE see 4.2.1.5
OLDQEL ̲ATTRIBUTES see 4.2.1.5
OLDQEL (I/F
-
data)
COMMAND (I/F - data)
OLD ̲SUBQUEUE ̲NO see 4.2.1.5
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
OLDQUEUE
OLDQEL ̲ATTRIBUTES (m)
OLDQEL (m)
COMMAND
OLD ̲SUBQUEUE ̲NO
Flowgram see Fig. 4.2.1.6.1-1
PROCEDURE SERVE ̲INPUT
BEGIN
CASE RECEIVE ̲FIRST ̲QEL (WAIT,OLDQUEUE)
C ̲OLDQEL ̲ATTRIBUTES,OLDQEL, OLD
̲SUBQUEUE ̲NO,CC)
ERROR ? ERROR (RECEIVE ̲FIRST ̲QEL ̲ERROR,
CC)
OK ? CHECK ̲COMMAND(OLDQEL ̲ATTRIBUTES)(COMMAND)
END CASE RECEIVE ̲FIRST ̲QEL
END PROCEDURE SERVE ̲INPUT
Fig. 4.2.1.6.1-1
4.2.1.6.2 C̲H̲E̲C̲K̲ ̲C̲O̲M̲M̲A̲N̲D̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
This procedure checks that a received
QEL has the right main and subtype.
I̲n̲t̲e̲r̲f̲a̲c̲e̲
a) CHECK ̲COMMAND (OLDQEL ̲ATTRIBUTES)(COMMAND)
b) CHECK ̲COMMAND (R1, R4, R6)
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R1 Pointer to OLDQEL ̲ATTRIBUTES
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R4 COMMAND
R0, R5, R7 Kept
C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
CHECK ̲COMMAND calls the procedure
- ERROR ̲OLD
D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
OLD QEL ̲ATTRIBUTES (I/F - data)
COMMAND (I/F - data)
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
OLDQEL ̲ATTRIBUTES.MAINTYPE
OLDQEL ̲ATTRIBUTES.SUBTYPE
COMMAND (m)
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
None
Flowgram see Fig. 4.2.1.6.2-1
PROCEDURE CHECK ̲COMMAND
BEGIN
CASE OLDQEL ̲ATTRIBUTES.MAINTYPE OF:
SSC ̲COMMAND ?
OLDQEL ̲ATTRIBUTES.SUBTYPE EQ CLOSE ̲DOWN
COMMAND = CLOSE ̲DOWN
ERROR ̲OLD (COMMAND ̲ERROR, OK)
COMMAND = ILLEGAL
TIME ̲OUT ?
CASE OLDQEL ̲ATTRIBUTES.SUBTYPE OF:
TIMEOUT ̲EVENT ? COMMAND = TMON ̲REQUEST
TIMEOUT ̲CANCELLED ? COMMAND = TMON
̲CANCELLED
OTHERWISE ?
ERROR ̲OLD (COMMAND ̲ERROR, OK)
COMMAND = ILLEGAL
END CASE OLD ̲ATTRIBUTES.SUBTYPE
SUPERVISOR ̲SSC ̲COMMAND ?
OLD ̲ATTRIBUTES ̲SUBTYPE = SYSTEM ̲INTEGRITY
̲CHECK ?
COMMAND = SUPERVISOR ̲REQUEST
ERROR ̲OLD (COMMAND ̲ERROR, OK)
OTHERWISE ? ERROR ̲OLD(COMMAND ̲ERROR,
OK)
END CASE OLDQEL ̲ATTRIBUTES.MAINTYPE
END PROCEDURE CHECK ̲COMMAND
Fig. 4.2.1.6.2-1
4.2.1.6.3 R̲E̲P̲L̲Y̲ ̲S̲E̲N̲D̲E̲R̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
REPLY ̲SENDER sends replies on supervisor
request and sends acknowledgement for
SSC commands.
I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲D̲e̲f̲i̲n̲i̲t̲i̲o̲n̲
a) REPLY ̲SENDER(DESTQEL: QEL ̲REFERENCE,
FLAG: INTEGER)
b) REPLY ̲SENDER (R0, R3, R6)
R̲e̲g̲i̲s̲t̲e̲r̲s̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 FLAG
R3 Pointer to DESTQEL
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R3 Kept
R0-R2, R4-R7 Destroyed
C̲o̲m̲p̲o̲n̲e̲n̲t̲
SERVE ̲INPUT calls the procedure
- ERROR ̲OLD
and the CSF procedure
- RECEIVE ̲FIRST ̲QEL
D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
DEST QEL (I/F data)
FLAG (I/F data)
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
Variable
SEND ̲QEL ̲PARAM: SEND ̲PARAMS
see DBD
used to specify the parameters in
the reply.
M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
First SEND ̲QEL ̲PARAMS parameter is set,
and thereafter the reply is sent.
F̲l̲o̲w̲g̲r̲a̲m̲
See Fig. 4.2.1.6.3-1
PROCEDURE REPLY ̲SENDER
BEGIN
SEND ̲QEL ̲PARAMS.INFORMATION TYPE = FALSE
SEND ̲QEL ̲PARAMS.CHECKP ̲STATUS = FALSE
SEND ̲QEL ̲PARAMS.HEADER.MAINTYPE = ACK
SEND ̲QEL ̲PARAMS.HEADER.SUBTYPE = SSC ̲ACK
SEND ̲QEL ̲PARAMS.HEADER.FLAG = FLAG
CASE SEND ̲REPLY(SEND ̲QEL ̲PARAMS, NIL,DEST
̲QEL) (CC)
ERROR ? ERROR ̲OLD(OTHER ̲SYSTEM ̲CALL
̲ERROR, CC)
OK ?
END CASE SEND ̲REPLY
END PROCEDURE REPLY ̲SENDER
Fig. 4.2.1.6.3-1
4.2.1.6.4 E̲R̲R̲O̲R̲ ̲O̲L̲D̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
ERROR ̲OLD handles all errors which occur
in OLD.
External errors are handled with the system
call SEND ̲GARBLE, meanwhile system call
errors are handled with the system call
ANALYSE ̲ERROR.
I̲n̲t̲e̲r̲f̲a̲c̲e̲
a) ERROR ̲OLD (KIND ̲OF ̲ERROR: ERROR ̲TYPE,
CC: COMPLETION ̲
CODE)
b) ERROR ̲OLD (R0, R6, R7)
R̲e̲g̲i̲s̲t̲e̲r̲s̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 KIND ̲OF ̲ERROR
R7 CC
R6 Link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0-R7 Destroyed
D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
see
QERROR ̲INF see
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
OLDQUEUE
OLDQUEUE ̲ATTRIBUTES
CODE
c) I̲n̲t̲e̲r̲n̲a̲l̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
ERROR ̲QEL: QERROR ̲INF
KIND ̲OF ̲ERROR: ERROR ̲TYPE
C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
ERROR ̲OLD calls the CSF function:
- ANALYZE ̲ERROR
- SEND ̲GARBLE
PROCEDURE ERROR ̲OLD
BEGIN
CASE KIND ̲OF ̲ERROR
RECEIVE ̲FIRST ̲QEL ̲ERROR ?
CASE ANALYZE ̲ERROR (CC, 1, QUEUE ̲EMPTY):
(CONTINUE)
CONTINUE ?
END CASE ANALYZE ̲ERROR
OTHER ̲SYSTEM ̲CALL ̲ERROR ? ANALYZE ̲ERROR
(CC, 0, NIL)
COMMAND ̲ERROR ?
ERROR ̲QEL.MAINQUEUE = OLDQUEUE.MAINQUEUE
ERROR ̲QEL.SUBQUEUE = OLD ̲SUBQUEUE
̲NO
ERROR ̲QEL.ORIGINAL ̲SENDER = OLDQEL
̲ATTRIBUTES.SENDER
ERROR ̲QEL.USER ̲CC = 0
SEND ̲GARBLE(CONTINUE,QERROR,ERROR
̲QEL)
END CASE KIND ̲OF ̲ERROR
END ̲PROCEDURE ̲ERROR ̲OLD