top - download
⟦bf56e27db⟧ Wang Wps File
Length: 90465 (0x16161)
Types: Wang Wps File
Notes: 99S/SDS/029
Names: »1827A «
Derivation
└─⟦bf0247e75⟧ Bits:30006089 8" Wang WCS floppy, CR 0141A
└─ ⟦this⟧ »1827A «
WangText
/ /…06….…0b…$…08…$…0a…$…0d…$…0e…$
$ #…08…#…0c…#…0e……1f……0a……1f……0f……1f……05……1e……0a……1e……0f……1e… …1d……09……1d……0c……1d……01……1d……07……1c……0c……1c……01……1c… …1c……05……1b……09……1b……0c……1b……0d……1b……01……1b……02……1b…
…1b……05……1a……0a……1a……0e……1a… …19……08……19……0c……19……0d……19……0e……19…
…18……08……18……0c……18……00……18… …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.9 C̲F̲H̲ ̲S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲
4.2.9.1 C̲F̲H̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The functions derived for the CFH subpackage are defined
in figure 4.2.9.1-1.
The CFH functions relate to the two input sources:
- execution of online operator commands
- handling of FMS, TMS and WDP errorreports and the
functions derived from functional responsibilities:
- own errorhandling
- security handling
- start-up, which includes execution of the operator
start-up command.
Fig. 4.2.9.1-1…01…CFH FUNCTIONS
4.2.9.1.1 …02…C̲O̲P̲S̲Y̲ ̲s̲t̲a̲r̲t̲-̲u̲p̲ ̲f̲u̲n̲c̲t̲i̲o̲n̲s̲
The COPSY start-up responsibilities relate to the actions
taken subsequent to a DAMOS bootload sequence and until
online operation (refer to fig. 4.2.9.1.1-1 overleaf).
The
- initialize COPSY
- execute start cmd
- initialize mirrored disk
- operator only actions
- supervisor only actions
are described in section 2.2.2.1 and are not further
detailed.
4.2.9.1.3 (l/3)
Fig. 4.2.9.1.1 (2/3)
Fig. 4.2.9.1.1 (3/3)
The following sections expand the
- create, load and start processes
- create peripherals
functions.
The description is divided into
- general start-up principles
- handling of objects and subjects
- start of processes
4.2.9.1.2 G̲e̲n̲e̲r̲a̲l̲ ̲S̲t̲a̲r̲t̲-̲u̲p̲ ̲p̲r̲i̲n̲c̲i̲p̲l̲e̲s̲
A CAMPS software configuration is defined by
- configuration parameters per t̲y̲p̲e̲ of peripheral
device connected to the CAMPS system e.g.
VDU, ROP, TRC-PTOP etc.
- a set of load files per t̲y̲p̲e̲ of process
- a set of constants defining the maximum CAMPS site
(corresponding to the maximum wired capacity) named
"Maximum Configuration". The constants are preceded
by MAX-; e.g. MAX ̲VDUS. The constants defines the
maximum number of lines within a peripheral type.
- a set of constants defining a specific CAMPS site
named "Site Configuration".
The constants are preceded by NO ̲OF; e.g.
NO ̲OF ̲VDUS.
The configuration parameters per type are contained
in a file CONFIG, which defines data for
- process
- subprocess
- mirrored disks
- CAMPS queues
creation.
The file is loaded into COPSY data space in a specific
segment named CONFIG during the start-up phase.
Given the above configuration data COPSY creates:
- processes
- subprocesses
- queues
- COPSY coroutines
Processes, subprocesses and COPSY Coroutines are created
according to the site configuration.
CAMPS queues are created according to the maximum configuration.
Hereby the logical terminal, device, channel numbers
can be used in queue referencing in group capabilities.
Site dependant disk tables are created according to
the maximum configuration.
For terminal device and channel tables the supervisor
ensures that only entries corresponding to the site
configuration are used.
Thereby logical terminal device and channel numbers
can be used in table referencing.
The disk table creation is not a SSC responsibility.
4.2.9.1.2.1 O̲t̲h̲e̲r̲ ̲c̲o̲n̲s̲t̲r̲a̲i̲n̲t̲s̲
a) M̲e̲m̲o̲r̲y̲ ̲S̲i̲z̲e̲
All process data and program space are memory resident.
b) P̲r̲o̲c̲e̲s̲s̲ ̲s̲e̲g̲m̲e̲n̲t̲s̲
A process only contains one user level application
- program segment
- data segment
As data segments have to be mapped into TMP data space
during TMP data transfers a limit is set on the data
segment size. This again limits the number of subprocesses
in a process.
The COMON segment is actually also a user level program
segment.
4.2.9.1.3 H̲a̲n̲d̲l̲i̲n̲g̲ ̲o̲f̲ ̲o̲b̲j̲e̲c̲t̲s̲ ̲a̲n̲d̲ ̲s̲u̲b̲j̲e̲c̲t̲s̲
The section defines the "subjects"
- processes and
- subprocesses
in CAMPS and the associated "objects" i.e.
- Kernel objects
- FMS objects
- TMS objects
- CAMPS queues
The definition refer to
- creation of objects
- how a process gets a handle to an object
- the security setting
- the resource management
4.2.9.1.3.1 C̲A̲M̲P̲S̲ ̲p̲r̲o̲c̲e̲s̲s̲e̲s̲ ̲a̲n̲d̲ ̲s̲u̲b̲p̲r̲o̲c̲e̲s̲s̲e̲s̲
The CAMPS online software consists of a Kernel and
a number of processes as illustrated in figure 4.2.9.1.3.1-1
overleaf, where processes are arranged hierarchically
with respect to creation.
Processes are divided into
- line and
- non line processes
Non-line processes and COPSY corresponds to one CAMPS
subprocess.
The line processes contains a number of subprocesses.
Except for the user process, the subprocesses within
a process are of the same type. A user process contains
- a USER subprocess
- Max one MSO subprocess
- Max one MDCO subprocess
depending on the number of MSO and MDCO subprocesses.
Fig. 4.2.9.1.3.1-1…01…CAMPS online software
The load and initialization of
- the Kernel
- ROOT
- FMS-MOVING
- FMS-FIXED
- TMS
- COPSY
- DUMMY PROCESSES
is performed by DAMOS as a result of the BOOT command.
The user interface to Kernel initialization, is the
SASS (system attributes specification segment), which
contains start-up parameters for the DAMOS modules.
The SASS parameters are specified in CPS/SDS/013, Appendix
8.
DAMOS INITIALIZATION
The user interface to ROOT start-up, is a command and
parameter list, which defines the processes and resources
to be created by ROOT.
The parameters include the object code for the ROOT
children.
The ROOT command/parameter format is specified in CPS/SDS/015,
Appendix 2:
DAMOS ROOT OPERATING SYSTEM
ROOT loads and starts the file systems
- FMS ̲MOVING (includes the MMS)
for the mirrored, offline and floppy moving head disks
- FMS ̲FIXED
for the mirrored fixed head disks,
which are to be used during subsequent COPSY child
process load (refer to fig. 4.2.9.1.3.2-2 overleaf).
Also, ROOT creates, loads and starts the terminal management
system (TMS ̲ID), a dummy process per CPU and COPSY.
Fig. 4.2.9.1.3.1-2…01…CAMPS File Systems
4.2.9.1.3.2 H̲a̲n̲d̲l̲i̲n̲g̲ ̲o̲f̲ ̲K̲e̲r̲n̲e̲l̲ ̲o̲b̲j̲e̲c̲t̲s̲
The DAMOS Kernel handles the following objects:
- process ̲object
- segment ̲object
- CPU ̲object
- CPU ̲pool ̲object
- sync ̲el ̲object
- device ̲object
- resource ̲pool ̲object
a) P̲r̲o̲c̲e̲s̲s̲ ̲o̲b̲j̲e̲c̲t̲s̲
The CAMPS process tree is defined in the previous
section. No COPSY childprocesses create processes.
During process creation a process "user" identification
to be used in
- profile and functional capability checking
in the Kernel, FMS and TMS for a process versus
an object is specified.
The user identification consists of two parts:
- a user group identification (UGI)
- a unique process identification
In CAMPS the UGI is set identical to the CAMPS
process no.
The unique process identification is the PROC ̲ID
received during creation of a process.
b) M̲e̲m̲o̲r̲y̲ ̲S̲e̲g̲m̲e̲n̲t̲ ̲o̲b̲j̲e̲c̲t̲s̲
In figure 4.2.9.1.3.2-1 and 2 is shown the memory
segments applicable for COPSY and its childprocesses.
The
- COMON segment is created and loaded by ROOT
- CSF ̲SHARED and TMP ̲SHARED segments are created
by ROOT, but loaded by COPSY
- COPSY PS, DS, and PPS are created and loaded
by ROOT
- COPSY child PS, DS and PPS are created and
loaded by COPSY
The PS, DS and PPS segments are specificed in a DAMOS
Create ̲Process call and are mapped in by DAMOS.
The COMON segment is inherited to COPSY and to children
and are mapped in by the PRE ̲INITIALIZATION procedure
(refer the SWICD and below).
The CSF ̲SHARED and TMP ̲SHARED segments are inherited
to COPSY and all COPSY children. The segments are mapped
into a process during level 6 initialization (refer
below).
page PROGRAM SPACE
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
0 GPS (global program
segment)
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
PS (program segment)
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
COMON (coroutine
monitor segment
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
63
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
Fig. 4.2.9.1.3.2-1…01…CAMPS Process Program Memory Segments
LEVEL BOUND PAGE SEGMENT
15 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
PPP 63
15
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
OBJECT DESCRIPTOR
TABLE
12,13,14 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
12 XFER DATA
8,9,10,11 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
8 IOS DATA
7 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
7 STREAM DATA PPS
6 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
CSF LOCAL DATA
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
IOC LOCAL DATA
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
6 TMP LOCAL DATA
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
TMP SHARED DATA TMP
̲SHARED
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
CSF SHARED DATA
1,2,3,4,5 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
1 STP SHARED DATA CSF
̲SHARED
0 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
empty
0
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
DS 0 DS
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
Fig. 4.2.9.1.3.2-2…01…CAMPS process data space layout
b1) D̲a̲t̲a̲ ̲S̲p̲a̲c̲e̲ ̲l̲a̲y̲o̲u̲t̲
The CAMPS Process data space is defined in figure
4.2.9.1.3.2-2.
A DS (user mode data segment) and a PPS (process
parameter segments) are created per process.
The TMP ̲SHARED and CSF ̲SHARED segments only exists
in one incarnation.
The data space contains 16 levels defined by a
number of BOUNDS, which are specified during process
creation in the "process-creation-block". TMP ̲SHARED
and CSF ̲SHARED are mapped in at the same page for
all processes. The CAMPS service system interfaces
from
- CSF
- TMP
- IOC
are executed in level 6, while
- STP service system interfaces are executed
on level 1.
A level generally contains
- start-up parameters and
- data space
to be used in the process to service system communication.
Level 1 and 6 data will be defined during system generation.
The stream level is not used, as CAMPS uses direct
I/O.
The IOS level data are specified in
CSS/4200
I/O-SYSTEM ̲TYPES for PPS
and will be defined during system generation.
The XFER level data are specified in CSS/3200
TRANSFER MODULE FOR PPS
and will be defined during system generation.
Level 15 contains Kernel data and includes
- the PPP (process parameter page)
- the object descriptor table
Objects in the parents object descriptor table to be
inherited to a child are specified in the future object
descriptor table for the child.
To each object inherited a capability vector is specified.
In CAMPS
- FMS/TMS synchronization elements
- CPU pools
- CPU
- CSF/TMP synchronization elements
- COMON, CSF ̲SHARED, TMP ̲SHARED segments
are inherited to children as is described for the
object in question in this section.
Inherited objects are accessed by a child according
to the position in the inherit list. Identical
objects (e.g. FMS synchr. elements) and identical
object types (e.g. QMON ̲RSE) are identified by
Common constants for all processes. Refer to section
4.2.9.5.
b2) L̲e̲v̲e̲l̲ ̲i̲n̲i̲t̲i̲a̲l̲i̲z̲a̲t̲i̲o̲n̲
During resume of a process an initialization mask
is specified in the "process creation block", which
for each of the above defined levels defines if
an initialization procedure is to be invoked prior
to letting a process start execution.
DAMOS provides
- XFER and
- IOS
- STREAM
initialization procedures.
Only the XFER and IOS initialization procedures
are invoked in CAMPS for processes, which uses
FMS or TMS.
The IOS initialization procedure functions includes:
- look up of service system synchronization elements
- creation of response synchronization element
- set up of a service system communication
The CAMPS level 6 and level 1 initialization procedures
will be defined during system generation. The map-in
of the
- CSF ̲SHARED
- TMP ̲SHARED
segments is supported.
The level 0 initialization procedure is named
- PREINITIALIZATION
and is designed in the SWICD section 6.5.
It implements the functions:
- map in of COMON segment
- in trace mode the
- trace file is looked-up and
- the INIT ̲TRACE procedure is invoked.
The registers R0..R7 are used to define start-up information
to a child (refer SWICD section 6.5).
The information includes
- start-up type
- identification of subprocesses within the process
- no of subprocesses within type
- types of subprocess
- a CAMPS sequential process number
c) C̲P̲U̲ ̲a̲n̲d̲ ̲C̲P̲U̲ ̲p̲o̲o̲l̲ ̲o̲b̲j̲e̲c̲t̲s̲
CPU and CPU pool objects can not be created (they
are precreated by ROOT).
CPU objects are inherited to all COPSY children
and are used for performance monitoring of the
CPU.
CPU pool objects are inherited to COPSY and are
given to children in the DAMOS create-process "process-creation-block".
d) S̲y̲n̲c̲h̲r̲o̲n̲i̲z̲a̲t̲i̲o̲n̲ ̲e̲l̲e̲m̲e̲n̲t̲ ̲o̲b̲j̲e̲c̲t̲s̲
ROOT creates the following sync.els:
- FMS sync els (FMS)
- TMS sync els (TMS)
- CESE (DAMOS central errorreporting synchronization
element)
- TMON ̲SE (CSF)
- CSF ̲REPORT ̲SE (CSF) (SEMAPHORE)
- CSF ̲SAVE ̲SE (CSF)
- CSF ̲RTC ̲SE (CSF)(SEMAPHORE)
- TMP ̲SEARCH ̲SE (TMP)
- TMP ̲UPDATE ̲SE (TMP)
- STP ̲RESERVATION ̲SE (CSF)(SEMAPHORE)
- SYSE (COPSY)
- MMON ̲RSE (CSF)
- QMON ̲RSE (CSF)
- TMP ̲RSE (TMP)
and inherits the objects to COPSY. COPSY again inherits
the request sync.els ( ̲SE), received from ROOT to its
children.
COPSY creates reply sync. els ( ̲RSE), and inherits
these to its children.
Reply synchronization elements for TMS and FMS are
created by IOS during level 8 initialization.
The QMON ̲RSE objects and the STP ̲RESERVATION ̲SE are
cataloged by the creator.
Also, the FMS and TMS synchronization elements are
cataloged.
COPSY also creates a
- PSE (parent synchronization element), which are
specified in the process creation block during
DAMOS create ̲process.
- DSSE (device status sync.el used for FMS and TMS
asynchronous reporting), which are specified in
TMS assign and create subdevice and FMS assign
commands.
e) D̲e̲v̲i̲c̲e̲ ̲o̲b̲j̲e̲c̲t̲s̲
All devices are assigned by COPSY.
f) R̲e̲s̲o̲u̲r̲c̲e̲ ̲p̲o̲o̲l̲ ̲o̲b̲j̲e̲c̲t̲s̲
No such pools exist in CAMPS.
4.2.9.1.3.3 S̲e̲c̲u̲r̲i̲t̲y̲ ̲o̲n̲ ̲K̲e̲r̲n̲e̲l̲ ̲o̲b̲j̲e̲c̲t̲s̲
a) C̲a̲p̲a̲b̲i̲l̲i̲t̲y̲ ̲v̲e̲c̲t̲o̲r̲s̲
Functional capabilities are specified during inheritance
of objects according to data in the CONFIG segment.
b) O̲b̲j̲e̲c̲t̲ ̲l̲e̲v̲e̲l̲
All ROOT and COPSY created synchronization elements
are given level 8. The TMP ̲SHARED and CSF ̲SHARED
segments are given level 6. The COPSY, TMP and
CSF processes are given level 8.
Remaining objects are given level 0.
c) P̲r̲o̲f̲i̲l̲e̲s̲
In CAMPS, the DAMOS security profiles have an appearance
as defined in figure 4.2.9.1.3.3-1.
A profile is set during creation of an object.
C1) S̲y̲n̲c̲ ̲e̲l̲e̲m̲e̲n̲t̲ ̲p̲r̲o̲f̲i̲l̲e̲s̲
All CAMPS sync. els have the same profile, the
maximum profile:
- classification = CTS (cosmic top secret) (S
= 5)
- the atomal and encrypted special handling categories
are set (A = 1 and E = 1)
C2) S̲e̲g̲m̲e̲n̲t̲ ̲p̲r̲o̲f̲i̲l̲e̲s̲
The coroutine monitor segment COMON has an all
zero profile as it is accessed by all COPSY child
processes and by COPSY.
The TMP ̲SHARED and CSF ̲SHARED segments have the
maximum profile.
All DSs (data segment) and PSs (program segment)
have a profile as the process they use to be mapped
into.
C3) P̲r̲o̲c̲e̲s̲s̲ ̲P̲r̲o̲f̲i̲l̲e̲s̲
The processes
- LOG
- STP
- CMI
- OLD
have an all zero profile (as they do not handle
classified objects), while remaining processes
have the maximum profile and are trusted.
TMP is given the maximum profile as it has to map-in
the DS-data segment for any process.
15 1 0
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
T S A E
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
T: Trusted Flag (only applicable for processes)
S: Security Classification 0 dummy
1 unclassified
2 restricted
3 confidential
4 secret
5 CTS
A: Atomal Special Handling Category
E: Encrypted Special Handling Category
DAMOS Security Profile in CAMPS…01…Fig. 4.2.9.1.3.3-1
4.2.9.1.3.4 K̲e̲r̲n̲e̲l̲ ̲R̲e̲s̲o̲u̲r̲c̲e̲s̲
DAMOS resources are specified below (refer to DAMOS
for a definition of the types):
- resource ̲pool ̲resource,
- process ̲resource,
- sync ̲el ̲resource,
- pcf ̲list ̲el ̲resource, "used during AWAIT
- info ̲el ̲resource, "used during SEND
- segment ̲resource,
- pm ̲list ̲el ̲resource,
- internal ̲ram ̲ws ̲resource,
- external ̲ram ̲ws ̲resource,
- special ̲mem ̲ws ̲resource,
- vm ̲resource,
- df ̲entry ̲resource,
- df ̲acle ̲resource,
- DMA ̲resource,
- STI ̲resource
The ROOT process initially owns all resources.
During process creation a resource specification is
given, which per resource type specifies the maximum
claim for the child to the resource.
In CAMPS no resource pools are created, but resources
are drawn from the natural pool of a process, i.e.
from the parents resources.
Processes does not share resources; i.e. the sum of
the max. claims for
- ROOT children and
- COPSY child processes
to a specific resource type is less than or equal to
the ROOT natural pool.
The allocation of DAMOS resources to a process is specified
in the PROCESS ̲CONF table.
4.2.9.1.3.5 F̲M̲S̲ ̲o̲b̲j̲e̲c̲t̲s̲
CFH creates all files/directories on the mirroed disks,
enters file names into directories and projects files/directories.
Children have to lookup their files to get a handle.
CFH assigns disks and mounts volumes according to the
status of the device, which is specified in a port-table.
CFH assigns the mirrored disks and mounts the volume.
The offline disk is assigned by COPSY, but mounting
is handled by the supervisor. The floppy disk is assigned
and mounted by CFH.
ROOT users COPSY on to FMS, whereas CFH users on the
COPSY childprocesses, which uses the FMS. COPSY and
the supervisor(in order to mount volumes) are system
users, while all children are ordinary users.
During user-on, resources for the child process within
FMS are specified (e.g. no of files open simultaneously).
The resources to be used by the childprocess itself
are specified in the PPS at the IOS level 8 and are
taken from PPS memory space (e.g. no of simultaneous
IO-requests).
The profile of all files is set to zero by CFH via
a call of the CHANGE ̲PROFILE Command.
CFH looks up the CSF MMSSTORAGE file and gives it the
maximum profile.
4.2.9.1.3.6 T̲M̲S̲ ̲O̲b̲j̲e̲c̲t̲s̲
CFH creates devices according to the status of the
device, which is contained in a port-table.
STI devices, TIA and LTUX subdevices are created by
CFH, whereas LTUX line subdevices/"terminals" are created
by TEMCO, DEMCO, CEMCO.
LTU devices are assigned by CFH, whereas LTU line subdevices/"terminals"
are created by CEMCO.
During "terminal" creation an access level is specified.
This level corresponds to the Format Handler CPU level.
By this specification, it is ensured that the IOS can
not be called from below the Format Handler level.
The MAP is assigned by CFH, whereas WDP subdevices/"terminals"
are created by WAMCO.
TMS connections to a line are offered to a line handling
subprocess, which has to accept the line.
In the offer command is specified functional capabilities
for the child.
The security profile for the line is set via the CHANGE
̲PROFILE command (refer to figure 4.2.9.1.3.3-1 for
a profile layout) according to the terminal, device
or channel profile by TEMCO, DEMCO, CEMCO. All children
are trusted. The TMS purges buffers for lines having
a security classification higher than a security level,
which is initially defined to TMS.
ROOT users on COPSY to TMS.
CFH users on COPSY children, which uses TMS, to TMS.
For resource handling refer to FMS objects.
4.2.9.1.3.7 C̲A̲M̲P̲S̲ ̲q̲u̲e̲u̲e̲s̲ ̲a̲n̲d̲ ̲s̲u̲b̲p̲r̲o̲c̲e̲s̲s̲e̲s̲
CAMPS queues are created by CTH (via the INITIALIZE
̲QUEUES CSF command).
Subprocesses are initially identified to CSF and initial
profiles and functional capability are set by CFH (via
the CHANGE ̲SUBPROCESS ̲ATTRIBUTES command).
Queue profiles, which depends on terminal, device or
channel profile contents, are initially set by TEMCO,
DEMCO, CEMCO (via the SET ̲PROFILE Command).
During online operation TEMCO, DEMCO, CEMCO sets:
- CHANGE ̲SUBPROCESS ̲ATTRIBUTES (sets subprocess profile)
- SET ̲PROFILE (sets queue profile)
- SET ̲CAPABILITY (sets subprocess functional capability
to a queue)
The supervisor handler blocking of queues.
4.2.9.1.4 S̲t̲a̲r̲t̲ ̲p̲r̲o̲c̲e̲s̲s̲e̲s̲
COPSY childprocesses and MMS (in FMS ̲MOVING) are started
by CFH.
The start-up method depends upon the process type:
- MMS
MMS is resumed by ROOT, but is logically started
by CFH via a system call. The system call START
̲SYSTEM requests the MMS to restore queue contents
in WARM1 start-up.
- non-line processes.
These processes are started by a DAMOS resume command.
CFH does not synchronize the start-up.
- line processes.
These processes are started by a DAMOS resume command
and logically on a subprocess basis via CAMPS queue
commands.
CFHs initiates the start-up by starting the TEMCO,
DEMCO, CEMCO, WAMCO coroutines via a command to
an operation semaphore.
4.2.9.1.5 C̲F̲H̲ ̲o̲n̲l̲i̲n̲e̲ ̲f̲u̲n̲c̲t̲i̲o̲n̲s̲
The CFH online functions are defined overleaf.
CFH receives FMS, TMS and WDP errorreports and operator
commands.
The CFH functions related to errorreport handling are
defined in section 4.1.1.3.
Fig. 4.2.9.1.5-1…01…Online CFH functions
4.2.9.1.5.1 O̲p̲e̲r̲a̲t̲o̲r̲ ̲c̲o̲m̲m̲a̲n̲d̲s̲
CFH receives requests for execution of operator commands
from the CMI and sends a reply upon completion of execution.
The operator commands are divided into the following
areas:
- PU reconfiguration
- software control
- peripheral reconfiguration
The following PU reconfiguration commands are handled.
- close ̲down active PU
- close ̲down standby PU
- switchover
The commands are described in section 4.1.1.4.
CFH executes the CFH software control commands:
- load modified software
- print software version
- set trace mask
- adjust time
The commands will be further described in the module
section.
CFH executes the peripheral reconfiguration commands:
- handle BSM ̲X
- handle LTUX
- handle LTUX ̲LINE
- handle LTU
- handle LTU ̲LINE
- handle DISKS
For disks handle covers the commands:
- set offline (i.e. the device is connected to the
offline PU)
- enable (FMS: ASSIGN)
- disable (FMS: DISMANTLE)
- mount
- dismount
For BSM ̲X, LTUX, LTUX ̲LINE, LTU, LTU ̲LINE HANDLE covers
the commands
- set offline (TMS: deassign and WDP control)
- enable (TMS: create ̲subdevice)
- disable (TMS: dismantle)
- take out of service (TMS: dismantle)
4.2.9.1.6 C̲o̲m̲m̲o̲n̲ ̲f̲u̲n̲c̲t̲i̲o̲n̲s̲
The CFH functional breakdown has identified the common
functions, which are defined in figure 4.2.9.1.6-1
overleaf.
The common functions are realized by a number of CFH
common procedures.
Fig. 4.2.9.1.6-1…01…Common CFH functions
4.2.9.1.7 C̲F̲H̲ ̲i̲n̲t̲e̲r̲n̲a̲l̲ ̲e̲r̲r̲o̲r̲h̲a̲n̲d̲l̲i̲n̲g̲ ̲a̲n̲d̲ ̲v̲a̲l̲i̲d̲i̲t̲y̲ ̲c̲h̲e̲c̲k̲s̲
The general CFH errorhandling and validity checking
is defined in section 2.2.2.3.
The specific errorhandling and validity checking is
included in the module design.
4.2.9.1.8 C̲F̲H̲ ̲s̲e̲c̲u̲r̲i̲t̲y̲ ̲f̲u̲n̲c̲t̲i̲o̲n̲s̲
The CFH security functions relating to
- DAMOS/FMS/TMS objects and processes
- CAMPS queues and subqueues
are defined in section 4.2.9.1.3.
4.2.9.2 S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲
CFH contains 12 modules, a number of common procedures
and a common coroutine (COUNT)
A hierarchical invocation diagram for CFH modules is
presented overleaf.
The module COPSY ̲MAIN contains the COPSY main program.
The remaining modules are procedure collections within
the CFH coroutine.
In figure 4.2.9.2-2 functions defined in section 4.2.9.2
are allocated to modules.
Fig 4.2.9.2-1
Fig. 4.2.9.2-1
4.2.9.3 D̲a̲t̲a̲ ̲F̲l̲o̲w̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲L̲o̲g̲i̲c̲
4.2.9.3.1 C̲o̲n̲t̲r̲o̲l̲ ̲L̲o̲g̲i̲c̲
The control logic for the CFH subpackage is illustrated
in figure 4.2.9.3-1.
Modules are indicated by capital letters.
The logic is only schematically specified. The CREATE
̲ENVIRONMENT module also invokes:
- LOAD ̲SEGMENT
and the OPERATOR and SUPERVISOR ̲ONLY ̲MODE modules also
invokes:
- HW ̲ERROR ̲HANDLING.
COPSY ̲MAIN
begin
create ̲copsy ̲coroutines
end
CFH ̲MAIN
begin
execute ̲start ̲up ̲command
CREATE ̲PROCESSES
begin
CREATE ̲ENVIRONMENT
loop ̲for ̲all ̲child ̲processes
for ̲each ̲process ̲segment ̲do : LOAD ̲SEGMENT
create ̲process
end loop
start ̲up ̲type eq dead 1 or dead 2 ? INITIALIZE
̲MIRRORED ̲
DISKS ̲QUEUES
end ̲create ̲process
start ̲up ̲type eq sb1 or sb2 ? await ̲the ̲wdp ̲signals
̲
go ̲sb ̲active
CREATE ̲PERIPHERALS
operator ̲only ̲mode eq true ? OPERATOR ̲ONLY ̲MODE
supervisor only ̲mode eq true ? SUPERVISOR ̲ONLY
̲MODE
start ̲processes
ONLINE ̲OPERATION
begin
loop ̲forever
serve ̲cfh ̲os () (cmd)
case cmd of
wdp,fms,tms ̲report ? HW ̲ERROR ̲HANDLING
cmi ̲cmd? case cmi ̲cmd of
close ̲active ? ORDERED
̲CLOSE ̲DOWN
other ? execute command
end case
end ̲case ̲cmd
end ̲loop ̲forever
end ̲online ̲operation
end ̲cfh ̲main
Figure 4.2.9.3-1
CFH Control Logic
4.2.9.3.2 D̲a̲t̲a̲ ̲F̲l̲o̲w̲
4.2.9.3.2.1 T̲a̲b̲l̲e̲s̲
CFH makes use of the following tables:
a) P̲O̲R̲T̲ ̲T̲a̲b̲l̲e̲s̲ ̲(̲D̲B̲D̲)̲
These tables contains a:
- PU, BSM ̲X, LTUX, LTU, LTUX ̲LINE and an LTU
̲LINE table. The tables are used to:
- determine the initial CAMPS hardware configuration
- register the current hardware configuration
which are updated by the operator
- contain the status for all devices which may
be changed due to:
- ERRORS
- Operator setting
b) P̲r̲o̲f̲i̲l̲e̲s̲ ̲(̲D̲B̲D̲)̲
CFH accesses the
- terminal, device and channel table profile
connected/block field to ensure that terminal/traffic
activities are closed during operator reconfigurations.
c) I̲n̲h̲e̲r̲i̲t̲a̲n̲c̲e̲ ̲t̲a̲b̲l̲e̲s̲ ̲(̲D̲B̲D̲)̲
CFH updates during the initialization
- a TMP ̲LOAD ̲TABLE
- a CSF ̲LOAD ̲TABLE
which are loaded into TMP,CSF data space during
process segment load.
Also, environment tables data to all processes
are updated. Especially a
- CSF ̲ENVIRONMENT and a
- TMP ̲ENVIRONMENT
is made
d) C̲o̲n̲f̲i̲g̲u̲r̲a̲t̲i̲o̲n̲ ̲t̲a̲b̲l̲e̲s̲ ̲(̲C̲F̲H̲.̲C̲O̲M̲M̲O̲N̲)̲
A number of configuration tables (refer to section
4.2.9.5.1) are accessed to create the CAMPS Software
System.
e) P̲R̲O̲C̲E̲S̲S̲ ̲T̲A̲B̲L̲E̲ ̲(̲S̲S̲C̲.̲C̲O̲M̲M̲O̲N̲)̲
During the initialization phase CFH saves objects
concerning a process in the process entry.
During online operation the table is used by SEH
to register the overall process state.
f) S̲U̲B̲P̲ ̲T̲A̲B̲L̲E̲ ̲(̲S̲S̲C̲.̲C̲O̲M̲M̲O̲N̲)̲
CFH updates during the initialization phase the
process no to subprocess no relationship.
g) S̲U̲B̲P̲ ̲T̲A̲B̲L̲E̲ ̲(̲S̲S̲C̲.̲C̲O̲M̲M̲O̲N̲)̲
CFH updates during the initialization phase per
subprocess type:
- the first subprocess no within the type
- the number of subprocesses within the type
- the number of subprocesses of the given type
which exists in a single process
- access rights to be used during offer of connection
to childs.
h) L̲O̲G̲ ̲D̲ ̲T̲O̲ ̲L̲O̲C̲A̲L̲ ̲(̲S̲S̲C̲.̲C̲O̲M̲M̲O̲N̲)̲
CFH updates during the initialization phase a
- logical device no to local device relation.
i) L̲O̲G̲ ̲C̲ ̲T̲O̲ ̲L̲O̲C̲A̲L̲ ̲(̲S̲S̲C̲.̲C̲O̲M̲M̲O̲N̲)̲
CFH updates during the initialization phase a
- logical channel no to local channel no relation.
j) M̲M̲O̲N̲ ̲R̲S̲E̲ ̲T̲A̲B̲L̲E̲ ̲(̲S̲S̲C̲.̲C̲O̲M̲M̲O̲N̲)̲
During the initialization phase CFH updates the
subprocess no to MMON reply synchronization element
relationship, which is used by TEMCO to answer
MMON security interrogation/warning requests.
4.2.9.3.2.2 F̲i̲l̲e̲s̲
SSC files are described in section 4.1.4.
a) P̲a̲t̲c̲h̲f̲i̲l̲e̲s̲
CFH uses the patchfiles during sequent load. The
patchfiles can be copied to another volume due
to operator request.
b) F̲o̲r̲m̲a̲t̲s̲
During dead 1, dead 2 start-up from the offline
disk, CFH copies format files to the mirrored disks.
c) G̲a̲r̲b̲l̲e̲ ̲f̲i̲l̲e̲
CFH copies the mirrored garble file to another
volume on operator request.
d) B̲O̲O̲T̲ ̲C̲A̲M̲P̲S̲
CFH copies the BOOT ̲CAMPS file from one volume
to another. The file is accessed by the DAMOS bootleader.
e) L̲o̲a̲d̲ ̲F̲i̲l̲e̲s̲
The LTU ̲FW files are used for LTU creation:
- during initialization
- online.
The DS, PS, PPS load files are used for segment
load during initialization. The CONFIG file is
used for:
- process
- mirrored disk
- CAMPS queues
creation. All load files in common can be copied
between volumes during online operation on operator
request.
4.9.9.4 M̲o̲d̲u̲l̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
4.2.9.4.1 T̲h̲e̲ ̲C̲O̲P̲S̲Y̲ ̲M̲A̲I̲N̲ ̲M̲o̲d̲u̲l̲e̲
4.2.9.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 module which constitutes the COPSY Main Program,
creates the semaphores which COPSY uses.
Thereafter pools for internal coroutine communication
is made.
At last all coroutines in COPSY are initialized and
the CFH coroutine started.
4.2.9.4.1.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) COPSY ̲MAIN
b) COPSY ̲MAIN (R6)
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̲
R 6 LINK
4.2.9.4.1.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
COPSY ̲MAIN contains/references the procedures/modules
specified in figure 4.2.9.4.1.3-1. The own procedures
are described in section 4.2.9.4.1.5.
Figure 4.2.9.4.1.3-1
4.2.9.4.1.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a 1) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲ ̲i̲n̲ ̲S̲S̲C̲ ̲C̲O̲M̲M̲O̲N̲
"P̲r̲i̲o̲r̲i̲t̲i̲e̲s̲
CFH ̲PRIO, SEH ̲PRIO, CMD ̲PRIO, WDP ̲MONITOR ̲REPORTS
̲PRIO,KEEP ̲ALIVE ̲PRIO, RECEIVE ̲OPERATIONAL ̲COMMANDS
̲PRIO, COUNT ̲PRIO, SHORT ̲PRIO, LONG ̲PRIO, TEMCO
̲PRIO, DEMCO ̲PRIO, CEMCO ̲PRIO, PRINT ̲ERROR ̲REPORT
̲PRIO.
C̲o̲r̲o̲u̲t̲i̲n̲e̲ ̲P̲r̲o̲g̲r̲a̲m̲ ̲E̲n̲t̲r̲i̲e̲s̲
SEH ̲MAIN, CFH ̲MAIN, WDP ̲MONITOR ̲REPORTS, KEEP ̲ALIVE,
RECEIVE ̲OPERATIONAL ̲COMMANDS, COUNT ̲MAIN, CMD ̲MAIN,
TEMCO ̲MAIN, DEMCO ̲MAIN, CEMCO ̲MAIN, PRINT ̲ERRROR
̲REPORT.
O̲p̲e̲r̲a̲t̲i̲o̲n̲ ̲B̲u̲f̲f̲e̲r̲s̲
NO ̲OF ̲SHORT ̲OPERATIONS,
NO ̲OF ̲LONG ̲OPERATIONS
a2) S̲i̲t̲e̲ ̲D̲e̲p̲e̲n̲d̲e̲n̲t̲ ̲C̲o̲n̲s̲t̲a̲n̲t̲s̲ ̲i̲n̲ ̲D̲B̲D̲
NO ̲OF ̲VDUS,
NO ̲OF ̲SADS,
NO ̲OF ̲EXCS,
NO ̲OF ̲MTP ̲ROPS, MAX ̲MTP ̲ROPS,
NO ̲OF ̲LTPS, MAX ̲LTPS,
NO ̲OF ̲DEDICATED ̲OCRS, MAX ̲DEDICATED ̲OCPS,
NO ̲OF ̲DEDICATED ̲PTPS, MAX ̲DEDICATED ̲PTPS,
NO ̲OF ̲MICS ̲TAPE ̲EXCS, MAX ̲NICS ̲TAPE ̲EXCS,
NO ̲OF ̲SCARS ̲EXCS, MAX ̲SCARS ̲EXCS,
NO ̲OF ̲CCIS ̲EXCS, MAX ̲CCIS ̲EXCS,
COPSY ̲NO
a 3) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲ ̲i̲n̲ ̲S̲S̲C̲ ̲C̲O̲M̲M̲O̲N̲
O̲p̲e̲r̲a̲t̲i̲o̲n̲ ̲S̲e̲m̲a̲p̲h̲o̲r̲e̲s̲
CFH ̲OS, VDU ̲OS (), SAD ̲OS (), EXC ̲OS (),CMD ̲OS,
SEH ̲OS, WAMCO ̲OS, WDP ̲MON ̲OS, LONG ̲OS, SHORT ̲OS,
ERROR ̲REPORT ̲OS, REPORT ̲ERROR ̲OS
S̲i̲m̲p̲l̲e̲ ̲S̲e̲m̲a̲p̲h̲o̲r̲e̲s̲
CFH ̲S, ERRORS ̲S
O̲p̲e̲r̲a̲t̲i̲o̲n̲s̲
LONG ̲OP (), SHORT ̲OP ()
L̲i̲n̲e̲ ̲C̲o̲r̲o̲u̲t̲i̲n̲e̲ ̲D̲a̲t̲a̲
TEMCO ̲DATA, DEMCO ̲DATA, CEMCO ̲DATA
N̲o̲n̲-̲L̲i̲n̲e̲ ̲C̲o̲r̲o̲u̲t̲i̲n̲e̲ ̲D̲a̲t̲a̲
CFH ̲COROUTINE,
SEH ̲COROUTINE,
CMD ̲COROUTINE,
WDP ̲MONITOR ̲REPORTS ̲COROUTINE,
KEEP ̲ALIVE ̲COROUTINE,
RECEIVE ̲OPERATIONAL ̲COMMANDS ̲COROUTINE,
COUNT ̲COROUTINE
PRINT ̲ERROR ̲REPORT ̲COROUTINE
contains a coroutine description.
a 4) T̲a̲b̲l̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲ ̲i̲n̲ ̲S̲S̲C̲ ̲C̲O̲M̲M̲O̲N̲
LOG ̲D ̲TO ̲LOCAL (m)
LOG ̲C ̲TO ̲LOCAL (m)
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
TEMCO ̲DATA (). COROUTINE (m)
TEMCO ̲DATA (). TNO (m)
DEMCO ̲DATA (). COROUTINE (m)
DEMCO ̲DATA (). LOCAL ̲DNO (m)
DEMCO ̲DATA (). DNO (m)
CEMCO ̲DATA (). COROUTINE (m)
CEMCO ̲DATA (). LOCAL ̲CNO (m)
CEMCO ̲DATA (). CNO (m)
CEMCO ̲DATA (). CI ̲NO (m)
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR I : INTEGER
VAR COR ̲NO : INTEGER
Coroutine number of the coroutine to be initialized.
VAR DNO, LOCAL ̲DNO : INTEGER
Logical and local device number respectively
VAR CNO, LOCAL ̲CNO, CI ̲NO : INTEGER
Logical and local
- channel number
and logical
- circuit number
4.2.9.4.1.5 C̲O̲P̲S̲Y̲ ̲M̲A̲I̲N̲ ̲D̲e̲s̲i̲g̲n̲
a) C̲O̲P̲S̲Y̲ ̲M̲A̲I̲N̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Creates COPSY coroutines and semaphores.
F̲l̲o̲w̲g̲r̲a̲m̲:̲ Fig. 4.2.9.4.1.5-1
b) I̲N̲I̲T̲ ̲C̲O̲P̲S̲Y̲ ̲S̲E̲M̲A̲P̲H̲O̲R̲E̲S̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Initializes the semaphores used in COPSY
F̲l̲o̲w̲g̲r̲a̲m̲:̲ See fig. 4.2.9.4.1.5-2
c) I̲N̲I̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲P̲O̲O̲L̲S̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
COPSY coroutines communicates by means of 2 buffer
pools:
SHORT ̲OP (1.. NO ̲OF ̲SHORT ̲OPERATIONS)
LONG ̲OP (1.. NO ̲OF ̲LONG ̲OPERATIONS)
The buffer pools are initialized and placed in
the two operation semaphores:
SHORT ̲OS
LONG ̲OS
F̲l̲o̲w̲g̲r̲a̲m̲:̲ See fig. 4.2.9.4.1.5-3
d) C̲R̲E̲A̲T̲E̲ ̲T̲E̲R̲M̲I̲N̲A̲L̲ ̲C̲O̲R̲O̲U̲T̲I̲N̲E̲S̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
For I= 1.. NO ̲OF ̲VDUS the data area, TEMCO ̲DATA
(I), for the I'te terminal is initialized. Specially
TEMCO ̲DATA (I). COROUTINE is initialized as the
coroutine-record corresponding to the I'te terminal.
I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) CREATE ̲TERMINAL ̲COROUTINES (COR ̲NO:INTEGER)
(COR ̲NO:INTEGER)
b) CREATE ̲TERMINAL ̲COROUTINES (R1, R6)
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̲
R 1 COR ̲NO
R 6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R 1 COR ̲NO
F̲l̲o̲w̲g̲r̲a̲m̲:̲ See fig. 4.2.9.4.1.5-4
e) C̲R̲E̲A̲T̲E̲ ̲D̲E̲V̲I̲C̲E̲ ̲C̲O̲R̲O̲U̲T̲I̲N̲E̲S̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
For I=1.. NO ̲OF ̲SADS the data area, DEMCO ̲DATA
(I) for the I'te device is initialized. Specially
DEMCO ̲DATA (I).COROUTINE is initialized as the
coroutine-reford corresponding to the I'te device.
I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) CREATE ̲DEVICE ̲COROUTINES (COR ̲NO:INTEGER)
(COR ̲NO:INTEGER)
b) CREATE ̲DEVICE ̲COROUTINES (R1, R6)
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̲
R 1 COR ̲NO
R 6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R 1 COR ̲NO
F̲l̲o̲w̲g̲r̲a̲m̲:̲ See fig. 4.2.9.4.1.5-5
f) C̲R̲E̲A̲T̲E̲ ̲C̲H̲A̲N̲N̲E̲L̲ ̲C̲O̲R̲O̲U̲T̲I̲N̲E̲S̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
For I=1.. NO ̲OF ̲EXCS the data area, CEMCO ̲DATA
(1) for the I'te channel is initialized. Specially
CEMCO ̲DATA (I).COROUTINE Is initialized as the
coroutine-record corresponding to the I'te device.
I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) CREATE ̲CHANNEL ̲COROUTINES (COR ̲NO:INTEGER)
(COR ̲NO:INTEGER)
b) CREATE ̲CHANNEL ̲COROUTINES (R1, R6)
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̲
R 1 COR ̲NO
R 6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R 1 COR ̲No
F̲l̲o̲w̲g̲r̲a̲m̲:̲ See fig. 4.2.9.4.1.5-6
PROCEDURE COPSY ̲MAIN
BEGIN
INIT ̲COPSY ̲SEMAPHORES
INIT ̲BUFFER ̲POOLS
INIT ̲COMMON (CFH ̲COROUTINE, CFH ̲PRIO, COPSY ̲NO, 1)
INIT ̲COROUTINE (SEH ̲COROUTINE, SEH ̲PRIO, COPSY ̲NO, 2,LOCATION
(SEH ̲MAIN))
INIT ̲COROUTINE (CMD ̲COROUTINE, CMD ̲PRIO, COPSY ̲NO, 3,LOCATION
(CMD ̲MAIN))
"create 3 WAMCO coroutines"
INIT ̲COROUTINE (WDP ̲MONTIOR ̲REPORTS ̲COROUTINE,
WDP ̲MONITOR ̲REPORTS ̲PRIO, COPSY ̲NO, 4,
LOCATION (WDP ̲MONITOR ̲REPORTS))
INIT ̲COROUTINE (KEEP ̲ALIVE ̲COROUTINE, KEEP ̲ALIVE ̲PRIO,
COPSY ̲NO, 5, LOCATION (KEEP ̲ALIVE))
INIT ̲COROUTINE (RECEIVE ̲OPERATIONAL ̲COMMAND ̲COROUTINE,
COPSY ̲NO,6,RECEIVE ̲OPERATIONAL ̲COMMANDS
̲PRIO,
LOCATION (RECEIVE ̲OPERATIONAL ̲COMMANDS))
INIT ̲COROUTINE (COUNT ̲COROUTINE, COUNT ̲PRIO, COPSY ̲NO,
7,
LOCATION (COUNT ̲MAIN))
INIT ̲COROUTINE (PRINT ̲ERROR ̲REPORT ̲COROUTINE,
PRINT ̲ERROR ̲REPORT ̲PRIO,
COPSY ̲NO, 8, LOCATION(PRINT ̲ERROR ̲REPORT)
COR ̲NO = 9
CREATE ̲TERMINAL COROUTINES (COR ̲NO)(COR ̲NO)
CREATE ̲DEVICE ̲COROUTINES (COR ̲NO)(COR ̲NO)
CREATE ̲CHANNEL ̲COROUTINES (COR ̲NO) (COR ̲NO)
"enter coroutine operation
PRE ̲INITIALIZATION (MAP ̲IN ̲INIT)
CFH ̲MAIN
END ̲COPSY ̲MAIN
Fig. 4.2.9.4.1.5-1
PROCEDURE INIT ̲COPSY ̲SEMAPHORES
VAR I = INTEGER
BEGIN
I = 0
LOOP
I = I + 1
INIT ̲SEMAPHORE (0, VDU ̲OS (I))
I EQ NO ̲OF ̲VDUS ? EXIT
END ̲LOOP
I = 0
LOOP
I = I + 1
INIT ̲SEMAPHORE (0, SAD ̲OS (I))
I EQ NO ̲OF ̲SADS ? EXIT
END ̲LOOP
I = 0
LOOP
I = I + 1
INIT ̲SEMAPHORE (0, EXC ̲OS (I))
I EQ NO ̲OF ̲EXCS ? EXIT
END ̲LOOP
INIT ̲SEMAPHORE (0, CFH ̲OS)
INIT ̲SEMAPHORE (0, CFH ̲S)
INIT ̲SEMAPHORE (0, SHORT ̲OS)
INIT ̲SEMAPHORE (0, LONG ̲OS)
INIT ̲SEMAPHORE (0, CMD ̲OS)
INIT ̲SEMAPHORE (0, SEH ̲OS)
INIT ̲SEMAPHORE (0, WAMO ̲OS)
INIT ̲SEMAPHORE (0, WDP ̲MON ̲OS)
INIT ̲SEMAPHORE (0, ERROR ̲S)
INIT ̲SEMAPHORE (0, REPORT ̲ERROR ̲OS)
INIT ̲SEMAPHORE (0, ERROR ̲REPORT ̲OS)
INIT ̲SEMAPHORE (0, REPORT ̲ERROR ̲OS)
INIT ̲SEMAPHORE (0, ERROR ̲REPORT ̲OS)
END ̲INIT ̲COPSY ̲SEMAPHORES
Fig. 4.2.9.4.1.5-2
PROCEDURE INIT ̲BUFFER ̲POOLS
VAR I : INTEGER
BEGIN
I = 0
LOOP
I = I + 1
INIT ̲OPERATION (SHORT ̲PRIO, SHORT ̲OPC(I))
SIGNAL ̲OPSEM (SHORT ̲OS, SHORT ̲OPC(I))
I EQ NO ̲OF ̲SHORT ̲OPERATIONS ? EXIT
END LOOP
I = 0
LOOP
I = I + 1
INIT ̲OPERATION (LONG ̲PRIO, LONG ̲OP(I))
SIGNAL ̲OPSEM (LONG ̲OS, LONG ̲OP(I))
I EQ NO ̲OF ̲LONG ̲OPERATIONS ? EXIT
END LOOP
END ̲INIT ̲BUFFER ̲POOLS
Fig. 4.2.9.4.1.5-3
PROCEDURE CREATE ̲TERMINAL ̲COROUTINES
(COR ̲NO : INTEGER)(COR ̲NO:INTEGER)
VAR I : INTEGER
BEGIN
I = 0
LOOP
I = I + 1
INIT ̲COROUTINE (TEMCO ̲DATA (I).COROUTINE,
TEMCO ̲PRIO, COPSY ̲NO, COR ̲NO,
LOCATION (TEMCO ̲MAIN))
TEMCO ̲DATA (I). TNO = I
COR ̲NO = COR ̲NO + 1
I EQ NO ̲OF ̲VDUS ? EXIT
END LOOP
END ̲CREATE ̲TERMINAL ̲COROUTINES
Fig. 4.2.9.4.1.5-4
PROCEDURE CREATE ̲DEVICES ̲COROUTINES (COR ̲NO:INTEGER)
(COR ̲NO:INTEGER)
VAR DNO, LOCAL ̲DNO : INTEGER
BEGIN
DNO=0
LOCAL ̲DNO = 0
LOOP
DNO = DNO + 1,
LOCAL ̲DNO = LOCAL ̲DNO + 1
INIT ̲COROUTINE(DEMCO ̲DATA(LOCAL ̲DNO).COROUTINE,
DEMCO ̲PRIO, COPSY ̲NO, COR ̲NO,
LOCATION (DEMCO ̲MAIN)
DEMCO ̲DATA (LOCAL ̲DNO).LOCAL ̲DNO = LOCAL ̲DNO
DEMCO ̲DATA (LOCAL ̲DNO)DNO = DNO
LOG ̲D ̲TO ̲LOCAL (DNO) = LOCAL ̲DNO
LOCAL ̲DNO EQ NO ̲OF ̲MTP ̲ROPS ? DNO =
DNO + MAX ̲MTP ̲ROPS-NO ̲OF ̲MTP
̲ROPS
LOCAL ̲DNO EQ (NO ̲OF ̲MTP ̲ROPS + NO ̲OF ̲LTPS)?
DNO=DNO+MAX ̲LTPS ̲NO-OF
̲LTPS
LOCAL ̲DNO EQ (NO ̲OF ̲MTP ̲ROPS + NO ̲OF ̲LTPS
+ NO ̲OF ̲DEDICATED ̲OCRS ?
DNO=DNO+MAX ̲DEDICATED ̲OCRS-NO ̲OF ̲DEDICATED
̲OCRS
LOCAL ̲DNO EQ (NO ̲OF ̲MTP ̲ROPS + NO ̲OF ̲LTPS +
NO ̲OF ̲DEDICATED ̲OCRS + NO ̲OF ̲DEDICATED ̲PTRS)?
DNO=DNO+MAX ̲DEDICATED ̲PTPS-NO ̲OF ̲DEDICATED
̲PTRS
COR ̲NO = COR ̲NO + 1
LOCAL ̲DNO EQ NO ̲OF ̲SADS ? EXIT
END LOOP
END ̲CREATE ̲DEVICE ̲COROUTINES
Fig. 4.2.9.4.1.5-5
PROCEDURE CREATE ̲CHANNEL ̲COROUTINES (COR ̲NO : INTEGER)
(COR ̲NO : INTEGER)
VAR CNO,LOCAL ̲CNO, CI ̲NO : INTEGER
BEGIN
CNO = 0, LOCAL ̲CNO=0, CI ̲NO = 0
LOOP
CNO = CNO + 1, LOCAL ̲CNO = LOCAL ̲CNO + 1, CI ̲NO = CI
̲NO +1
INIT ̲COROUTINE(CEMCO ̲DATA(LOCAL ̲CDN).COROUTINE,CEMCO
̲PRIO,
COPSY ̲NO, COR ̲NO, LOCATION(CEMCO ̲MAIN))
CEMCO ̲DATA (LOCAL ̲CNO).LOCAL ̲CNO = LOCAL ̲CNO
CEMCO ̲DATA (LOCAL ̲CNO).CNO = CNO
CEMCO ̲DATA (LOCAL ̲CNO).CI ̲NO = CI ̲NO
LOG ̲C ̲TO ̲LOCAL (CNO) = LOCAL ̲CNO
LOCAL ̲CNO LT NO ̲OF ̲NICS ̲TARE ̲EXCS ?
CI ̲NO = 0
LOCAL ̲CNO EQ NO ̲OF ̲NICS ̲TARE ̲EXCS ?
CNO = CNO + MAX ̲NICS ̲TARE ̲EXCS-NO ̲OF ̲NICS ̲TARE
̲EXCS
LOCAL ̲CNO EQ (NO ̲OF ̲NICS ̲TARE ̲EXCS + NO ̲OF ̲SCARS ̲EXCS)?
(CNO = CNO + MAX ̲SCARS ̲EXCS-NO ̲OF ̲SCARS
̲EXCS
LOCAL ̲CNO EQ (NO ̲OF ̲NICS ̲TARE ̲EXCS + NO ̲OF ̲SCARS ̲EXCS
+
NO ̲OF ̲CCIS ̲EXCS) ?
CNO = CNO + MAX ̲CCIS ̲EXCS-NO ̲OF ̲CCIS ̲EXCS
COR ̲NO = COR ̲NO + 1
LOCAL ̲CNO EQ NO ̲OF ̲EXCS ? EXIT
END LOOP
END ̲CREATE ̲CHANNEL ̲COROUTINES
Fig. 4.2.9.4.1.5-6
4.2.9.4.2 T̲h̲e̲ ̲C̲F̲H̲ ̲M̲A̲I̲N̲ ̲M̲o̲d̲u̲l̲e̲
4.2.9.4.2.1 C̲F̲H̲ ̲M̲A̲I̲N̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲d̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The CFH ̲MAIN module contains the main CFH coroutine
program.
The CFH coroutine creates TMS connections to the WDP
̲VDU and WDP ̲ROP with the intention of executing the
operator start command.
Via the start command, which is executed is VDU TTY
mode, CFH gets the following parameters:
- time of day
- whether initial or modified software is to be used
- the CAMPS errorhandling mode of operation
- a mask specifying the patchfiles to be used
- specification of whether the operator and/or supervisor
only modes are to be entered
- start-up type.
The start-up disks to be used for further start-up
is determined:
- for start-up type SB1, SB2, DEAD 1, DEAD 2:
the offline disk
- for start-up type COLD, WARM 1: the mirrored disks
and the disk(s) are assigned and modules via FMS.
The module : CREATE ̲PROCESS is invoked.
Further actions depends on the start-up type.
S̲t̲a̲n̲d̲b̲y̲ ̲s̲t̲a̲r̲t̲-̲u̲p̲.̲
In the standby mode only OLD and CSF are started.
The start-up disk i.e. the offline disk is deassigned
and dismounted.
A go-active command from the WDP is awaited. Having
received this, TMP is started to allow TEMCO, DEMCO,
CEMCO operations, and the TEMCO, DEMCO,CEMCO coroutines
are commanded to set the subprocess queueprofiles according
to terminal, device and channel profile is started
i.e. CAMPS queue contents are retired.
The CREATE ̲PERIPHERALS module is invoked and remaining
processes are started DAMOS wise and logically via
TEMCO, DEMCO, CEMCO, WAMCO.
A̲c̲t̲i̲v̲e̲ ̲s̲t̲a̲r̲t̲-̲u̲p̲
TMP and CSF are started to allow TEMCO, DEMCO, CEMCO
operation and TEMCO, DEMCO, CEMCO are requested to
set queue profiles.
The CREATE ̲PERIPHERALS module is called and the processes
necessary for operator and supervisor only actions:
- LOG
- STP
- UMAM
- CMI
are started.
The line processes are started DAMOS wise (via a resume
command).
Hereafter the operator-only-mode and supervisor-only-mode
modules are invoked if so specified in the start-up
command.
Hereafter remaining processes are started DAMOS wise
and logically via TEMCO, DEMCO, CEMCO.
At last the on-line operation module is invoked.
4.2.9.4.2.2 M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲D̲e̲f̲i̲n̲i̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) CFH ̲MAIN
b) CFH ̲MAIN (R6)
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̲
R 6 LINK
4.2.9.4.2.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
The CFH ̲MAIN module references/consists of the procedure/modules
defined in figure 4.2.9.4.2.3-1, -2
Figures 4.1.9.4.2.3-1, -2
a) C̲F̲H̲ ̲M̲A̲I̲N̲
The procedure performs the following functions:
-requests execution of
-the start-up command
-assign/mount of start-up disks
-creation of processes, queues and disks
-the standby mode
-definition of subprocess message queue profiles
-creation of peripherals
-the only modes
-on-line operation
-starts
-SEH, CMD and WAMCO coroutines
-the processes necessary for execution of
-setting of queue profiles
-creation of peripherals
-the only modes
-on-line operation
b) S̲B̲ ̲S̲T̲A̲R̲T̲ ̲U̲P̲
The procedure starts the
- CSF and
- OLD
processes and starts the
- WAMCO coroutine (keep alive messages will be
sent).
The start-up disks are dismounted and deassigned
and a WDP go achive signal is awaited.
When receiving this
- the mirrored disks are assigned and mounted
- the OLD PU clock is saved
- remaining functions are a ...set of the start-up
active functions.
c) R̲E̲A̲D̲ ̲F̲R̲O̲M̲ ̲W̲D̲P̲ ̲V̲D̲U̲
The watchdog TMS connection tree is created and
the start-up command is executed.
d) A̲S̲S̲I̲G̲N̲ ̲M̲O̲U̲N̲T̲ ̲S̲T̲A̲R̲T̲ ̲U̲P̲ ̲D̲I̲S̲K̲S̲
The disks
- offline and/or
- mirrored disk
needed for start-up is assigned and mounted. The
root directory and load file directory is found.
e) A̲S̲S̲I̲G̲N̲ ̲M̲O̲U̲N̲T̲ ̲O̲F̲F̲L̲I̲N̲E̲ ̲D̲I̲S̲K̲ ̲
Assigns and mounts the offline disk and determines
the root directory.
The configuration display.
f) A̲S̲S̲I̲G̲N̲ ̲M̲O̲U̲N̲T̲ ̲M̲I̲R̲R̲O̲R̲E̲D̲ ̲D̲I̲S̲K̲S̲
The mirrored discs are assigned and mounted. At
first the discs are mounted as "dual" i.e. corresponding
to, that the discs were dismounted at close down.
If this fails, the discs are mounted as "dualisable"
i.e. they were not dismounted at system close down
and one of the discs is copied to the other disc.
g) S̲T̲A̲R̲T̲ ̲R̲E̲M̲A̲I̲N̲I̲N̲G̲ ̲P̲R̲O̲C̲E̲S̲S̲E̲S̲
Resumes the COPSY child processes not yet resumed.
h) S̲T̲A̲R̲T̲ ̲P̲R̲O̲C̲E̲S̲S̲
Resumes a single COPSY child process
i) S̲T̲A̲R̲T̲ ̲L̲I̲N̲E̲ ̲P̲R̲O̲C̲E̲S̲S̲E̲S̲
Resumes the line processes
j) S̲T̲A̲R̲T̲ ̲W̲A̲M̲C̲O̲ ̲S̲E̲T̲ ̲P̲U̲ ̲S̲T̲A̲T̲U̲S̲
Starts WAMCO, which
- starts CMI
- starts sending keep-alive messages.
The configuration display is updated.
k) D̲E̲F̲I̲N̲E̲ ̲Q̲U̲E̲U̲E̲ ̲P̲R̲O̲F̲I̲L̲E̲S̲
The TEMCO, DEMCO and CEMCO coroutines are requested
to set subprocesses queue profiles according to
terminal, device and channel profiles.
A reply from the coroutines is awaited via the
COUNT coroutine.
Hardware errorhandling is supported.
l) A̲W̲A̲I̲T̲ ̲G̲O̲ ̲A̲C̲T̲I̲V̲E̲
The procedure awaits a signal from the WDP to go
active.
Having received this
- the PU clock is updated
- a report is sent to the WDP ̲ROP, which defines
the reason for switchover.
m) S̲T̲A̲R̲T̲ ̲M̲M̲S̲
The MMS process is started via a specific MMON
command. Also, the current security interrogation/warning
profile is given.
n) S̲A̲V̲E̲ ̲O̲L̲D̲ ̲C̲L̲O̲C̲K̲
The PU clock is periodically dumped to disk in
a system parameter.
The value is saved in a system parameter.
4.2.9.4.2.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a 1)T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
FDCB ̲INDEX, VOLUME ̲NAME,OBJ ̲INDEX : DAMOS
IOS
SECURITY ̲PARAMETER ̲TYPE,
SECURITY ̲PARAMS,
DTG ̲TYPE : DBD.CSF
START ̲COR, START ̲SEH, START ̲SB,
SET ̲ACCESS ̲PROFILE, SEH ̲COR, WAMCO ̲COR : DBD
SB1,SB2, WARM1,WARM2,DEAD1,DEAD2 : DBD
OFFLINE ̲DISK, DISK ̲MOUNTED, ACTIVE,
PU1, PU2, : SSC.COMMON
SET ̲STATUS, OFFL ̲DISK, MIR ̲DISK ̲1,
MIR ̲DISK ̲2 : SSC.COMMON
LOAD ̲FAILED : SSC.COMMON
WDP ̲REP ̲COMMAND, WDP ̲INFO : SSC.COMMON
a2) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
TMP ̲P ̲NO, CSF ̲P ̲NO, LOG ̲P ̲NO, STP ̲P ̲NO, UMAM ̲P
̲NO,
CSF ̲P ̲NO, OLD ̲P ̲NO, COPSY ̲P ̲NO, SUPV ̲P ̲NO
NO ̲OF ̲PROCESSES : DBD
SYS ̲GEN, SSC ̲DIR ̲MODIFIED, SSC ̲DIR ̲INI-
TIAL, SSC ̲DIR,
FMS ̲FIXED, FMS ̲MOVING,
MIRM, MIRF : DBD
MIR ̲FIXED ̲ATTR (1..2),
MIR ̲MOVING ̲ATTR (1..2), : SSC.COMMON
MIR ̲FIXED, MIR ̲MOVING : DBD
NO ̲OF ̲VDUS, NO ̲OF ̲SADS, NO ̲OF ̲EXCS : DBD
NO ̲OF ̲OUTSTANDING ̲ANSWERS,
DEFINE ̲Q ̲PROFILE ̲PROC,
AWAIT ̲GO ̲ACTIVE ̲PROC,
CMD ̲TYPE ̲ERROR, CMD ̲ERROR : CFH.VARIOUS
a3) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
OPERATOR ̲ONLY, SUPERVISOR ̲ONLY,
LOAD ̲SW ̲TYPE,
START ̲DTG : CFH.VARIOUS
PATCH ̲MASK : CFH.LOAD
START ̲UP ̲TYPE ̲D : CFH.VARIOUS
PU ̲NO, CAMPS ̲ERROR ̲MODE,
DEVICE ̲SE,
LONG ̲OS : SSC.COMMON
MMS ̲STORAGE ̲FDCB : SSC.COMMON
MMS ̲STORAGE : DBD
LONG ̲OP,
COUNT ̲ANSWER, WRK : CFH.VARIOUS
CURRENT ̲CLOCK,
OLD ̲CLOCK : DBD
a 4)T̲a̲b̲l̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
PROCESS ̲TABLE (m) : SSC.COMMON
CURRENT and OLD ̲CLOCK system parameters
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
PROCESS ̲TABLE (). STATUS (m)
read CURRENT ̲CLOCK : system parameter
set OLD ̲CLOCK : system parameter
COUNT ̲ANSWER : common CFH
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR START ̲UP ̲ROOT ̲DIR, START ̲UP ̲DIR : FDCB ̲INDEX
Handle for the
- Root directory and the
- SSC ̲DIR ̲INITIAL or SSC ̲DIR ̲MODIFIED directory
are
the start-up disk.
VAR CC,I: INTEGER
VAR INF = RECORD
CC : INTEGER
VOLUME : VOLUME ̲NAME
END
Information to REPORT ̲ERROR/PU ̲DOWN
VAR OBJECT : OBJECT ̲INDEX
VAR PU ̲ID : PU1..PU2
VAR G ̲INF : COPSY ̲GARBLE ̲PARAMS
Information to COPSY ̲SEND ̲GARBLE
VAR SECP ̲SECURITY ̲PROFILE
VAR ROOT ̲DISK, MMS ̲FILE : FDCB ̲INDEX
4.2.9.4.2.5 C̲F̲H̲ ̲M̲A̲I̲N̲ ̲D̲e̲s̲i̲g̲n̲
The CFH ̲MAIN is described by the flowgrams in figure
4.2.9.4.2.5-1 through to 4.2.9.4.2.5-14
PROCEDURE CFH ̲MAIN
VAR START ̲UP ̲ROOT ̲DIR, START ̲UP ̲DIR : FDCB ̲INDEX
BEGIN
READ ̲FROM ̲WDP ̲VDU
ASSIGN ̲MOUNT ̲START ̲UP ̲DISKS ( ) (START ̲UP ̲ROOT ̲DIR,
START ̲UP ̲DIR)
CREATE ̲PROCESSES (START ̲UP ̲ROOT ̲DIR, START ̲UP ̲DIR)
DISMANTLE (START ̲UP ̲DIR) ; DISMANTLE (START ̲UP ̲ROOT ̲DIR)
(START ̲UP ̲TYPE ̲D EQ DEAD 1 OR)
(START ̲UP ̲TYPE ̲D EQ DEAD 2 ) ?
DISMOUNT ̲DISK (OFFLINE ̲DISK, SYSGEN) (CC)
DEASSIGN ̲DISK (OFFLINE ̲DISK)
PRE ̲INITIALIZATION(TRACE ̲MODE ̲INIT)
NOTIFY ̲CMD (START ̲COR)
NOTIFY ̲LONG (SEH ̲COR, START ̲SEH)
START ̲UP ̲TYPE ̲D EQ SB1 OR
? SB ̲START ̲UP
START ̲UP ̲TYPE ̲D EQ SB2
START ̲PROCESS (TMP ̲P ̲NO) ; SAVE ̲OLD ̲CLOCK
START ̲PROCESS (CSF ̲P ̲NO)
DEFINE ̲Q ̲PROFILE
START ̲MMS; START ̲PROCESS(LOG ̲P ̲NO); START ̲PROCESS(STP ̲P ̲NO)
START ̲PROCESS (UMAM ̲P ̲NO)
CREATE ̲PERIPHERALS
START ̲WAMCO ̲SET ̲PU ̲STATUS
START ̲LINE ̲PROCESSES
OPERATOR ̲ONLY EQ TRUE ? OPERATOR ̲ONLY ̲MODE
(SUPERVISOR ̲ONLY EQ TRUE AND
START ̲UP ̲TYPE ̲D EQ WARM 1) ? SUPERVISOR ̲ONLY ̲MODE
START ̲REMAINING ̲PROCESSES
COMMON ̲NOTIFY ̲LINE ̲COROUTINE (START ̲COR, NIL)
ONLINE ̲OPERATION
END ̲CFH ̲MAIN
Fig. 4.2.9.4.2.5-1
PROCEDURE
SB ̲START ̲UP
VAR CC : INTEGER
BEGIN
START ̲PROCESS (CSF ̲P ̲NO)
START ̲PROCESS (OLD ̲P ̲NO)
DISMOUNT ̲DISK (OFFLINE ̲DISK, SYS ̲GEN) (CC)
DEASSIGN ̲DISK (OFFLINE ̲DISK)
NOTIFY ̲LONG (WAMCO ̲COR, START ̲SB)
AWAIT ̲GO ̲ACTIVE
ASSIGN ̲MOUNT ̲MIRRORED ̲DISKS
START ̲PROCESS (TMP ̲P ̲NO)
SAVE ̲OLD ̲CLOCK
DEFINE ̲Q ̲PROFILES
START ̲MMS
CREATE ̲PERIPHERALS
START ̲WAMCO ̲SET ̲PU ̲STATUS
END ̲SB ̲START ̲UP
Fig. 4.2.9.4.2.5-2
PROCEDURE
READ ̲FROM ̲WDP ̲VDU
BEGIN
CREATE ̲WDP ̲TREE
get parameters
END ̲READ ̲FROM ̲WDP ̲VDU
Fig. 4.2.9.4.2.5-3
PROCEDURE
ASSIGN ̲MOUNT ̲START ̲UP ̲DISKS ( ) (START ̲UP ̲ROOT ̲DIR,
START ̲UP ̲DIR
: FDCB ̲INDEX)
VAR OFFL ̲ROOT ̲DIR, MIR ̲ROOT ̲DIR : FDCB ̲INDEX
VAR NAME : FILE ̲NAME
BEGIN
START ̲UP ̲TYPE ̲D EQ DEAD1 OR
START ̲UP ̲TYPE ̲D EQ DEAD2 OR ?
START ̲UP ̲TYPE ̲D EQ SB1 OR
START ̲UP ̲TYPE ̲D EQ SB2
ASSIGN ̲MOUNT ̲OFFLINE ̲DISK ( ) (OFFL ̲ROOT ̲DIR)
START ̲UP ̲TYPE ̲D EQ DEAD1 OR
START ̲UP ̲TYPE ̲D EQ DEAD2 OR ?
START ̲UP ̲TYPE ̲D EQ COLD OR
START ̲UP ̲TYPE ̲D EQ WARM1
ASSIGN ̲MOUNT ̲MIRRORED ̲DISKS ( ) (MIR ̲ROOT
̲DIR)
LOAD ̲SW ̲TYPE EQ INITIAL ̲SW ? NAME = SSC ̲DIR ̲MODIFIED
NAME = SSC ̲DIR ̲INITIAL
START ̲UP ̲TYPE ̲D EQ COLD OR
?
START ̲UP ̲TYPE ̲D EQ WARM1
START ̲UP ̲ROOT ̲DIR = MIR ̲ROOT ̲DIR
START ̲UP ̲ROOT ̲DIR = OFFL ̲ROOT ̲DIR
LOOK ̲UP (START ̲UP ̲ROOT ̲DIR, NAME) (START ̲UP ̲DIR)
END ̲ASSIGN ̲MOUNT ̲START ̲UP ̲DISKS
Fig. 4.2.9.4.2.5-4
PROCEDURE ASSIGN ̲MOUNT ̲OFFLINE ̲DISK ( ) (ROOT ̲DIR
: FDCB ̲INDEX)
VAR INF = RECORD
CC : INTEGER
VOLUME : VOLUME ̲NAME
END
BEGIN
ASSIGN ̲DISK (OFFLINE ̲DISK)
MOUNT ̲DISK (OFFLINE ̲DISK, SYS ̲GEN) (CC)
CC NE 0 ? INF.CC = CC
INF.VOLUME = SYS ̲GEN
REPORT ̲ERROR (LOAD ̲FAILED, INF)
PU ̲DOWN (LOAD ̲FAILED,INF)
GET ̲ROOT ̲MOV (SYS ̲GEN) (ROOT ̲DIR)
CONF ̲DISPLAY (SET ̲STATUS, OFFL ̲DISK, DISK ̲MOUNTED)
END ̲ASSIGN ̲MOUNT ̲OFFLINE ̲DISK
Fig. 4.2.9.4.2.5-5
PROCEDURE
ASSIGN ̲MOUNT ̲MIRRORED ̲DISKS ( ) (ROOT ̲DIR : FDCB ̲INDEX)
VAR CC . INTEGER
VAR INF = RECORD
CC : INTEGER
VOLUME : VOLUME ̲NAME
END
BEGIN
CASE ASSIGN ̲DUAL (FMS ̲FIXED, MIR ̲FIXED ̲ATTR (1),
MIR ̲FIXED ̲ATTR (2), MIRF, DEVICE
̲SE) (CC) OF
ERROR ? ANALYZE ̲ERROR (CC, 0)
END CASE
CASE ASSIGN ̲DUAL (FMS ̲MOVING, MIR ̲MOVING ̲ATTR
(1),
MIR ̲MOVING ̲ATTR(2), MIRM, DEVICE
̲SE) (CC) OF
ERROR ? ANALYZE ̲ERROR (CC, 0)
END CASE
CASE MOUNT (FMS ̲FIXED, MIRF,MIR ̲FIXED,DUAL) (CC)
OF
ERROR ? CASE ANALYZE ̲ERROR (CC, 1, HW,VOLUME
̲NOT ̲DUAL) OF
HW ? INF. CC = CC
INF. VOLUME = MIR ̲FIXED
REPORT ̲ERROR (LOAD ̲FAILED,
INF)
PU ̲DOWN (LOAD ̲FAILED, INF)
VOLUME ̲NOT ̲DUAL? MOUNT ̲DUALIZABLE
̲FIXED
END ̲CASE
END ̲CASE
CASE MOUNT(FMS ̲MOVING,MIRM,MIR ̲MOVING ̲DUAL)(CC)
OF
ERROR ? CASE ANALYZE ̲ERROR (CC,1, HW,VOLUME
̲NOT ̲DUAL) OF
HW ? INF. CC = CC
INF. VOLUME = MIR ̲MOVING
REPORT ̲ERROR(LOAD ̲FAILED,INF)
PU ̲DOWN (LOAD ̲FAILED, INF)
VOLUME ̲NOT ̲DUAL? MOUNT ̲DUALIZABLE
̲MOVING
END CASE
END ̲CASE
GET ̲ROOT ̲MOV (MIR ̲MOVING) (ROOT ̲DIR)
CONF ̲DISPLAY (SET ̲STATUS, MIR ̲DISK ̲1, DISK ̲MOUNTED)
CONF ̲DISPLAY (SET ̲STATUS, MIR ̲DISK ̲2, DISK ̲MOUNTED)
END ̲ASSIGN ̲MOUNT ̲MIRRORED ̲DISKS
Fig. 4.2.9.4.2.5-6(1/3)
PROCEDURE MOUNT ̲DUALIZABLE ̲FIXED
VAR SECTOR ̲SPEC: SECTOR ̲ADDRESS
BEGIN
CASE MOUNT (FMD ̲FIXED,MIRF,MIR ̲FIXED DUALIZABLE)(CC)
OF
ERROR? CASE ANALYZE ̲ERROR (CC,HW,1) OF
HW? INF.CC = CC
INF.VOLUME = MIR ̲FIXED
REPORT ̲ERROR(LOAD ̲FAILED,INF)
PU ̲DOWN(LOAD ̲FAILED,INF)
END ̲CASE
END ̲CASE
SECTOR ̲SPEC.FIRST ̲SECTOR = 0
SECTOR ̲SPEC.SECTOR ̲COUNT = MAX ̲FIXED ̲DISK ̲SECTORS
CASE DUALIZE ̲SECTORS(FMS ̲FIXED,SECTOE ̲SPEC,MIRF)(CC)
OF
ERROR? CASE ANALYZE ̲ERROR(CC,HW,1) OF
HW? INF.CC = CC
INF.VOLUME = MIR ̲FAILED
REPORT ̲ERROR(LOAD ̲FAILED,INF)
PU ̲DOWN(LOAD ̲FAILED,INF)
END ̲CASE
END ̲CASE
CASE FINISH ̲DUALIZE (FMS ̲FIXED,MIRF)(CC) OF
ERROR? ANALYZE ̲ERROR(CC,0)
END ̲CASE
END ̲MOUNT ̲DUALIZABLE ̲FIXED
Fig. 4.2.9.4.2.5-6 (2/3)
PROCEDURE MOUNT ̲DUALIZABLE ̲MOVING
VAR SECTOR ̲SPEC: SECTOR ̲ADDRESS
BEGIN
CASE MOUNT(FMD ̲MOVING,MIRM,MIR ̲MOVING,DUALIZABLE)(CC)
OF
ERROR? CASE ANALYZE ̲ERROR(CC,HW,1) OF
HW? INF.CC = CC
INF.VOLUME = MIR ̲MOVING
REPORT ̲ERROR(LOAD ̲FAILED,INF)
PU ̲DOWN(LOAD ̲FAILED,INF)
END ̲CASE
END ̲CASE
SECTOR ̲SPEC.FIRST ̲SECTOR = 0
SECTOR ̲SPEC.SECTOR ̲COUNT = MAX ̲MOVING ̲DISC ̲SECTORS
CASE DUALIZE ̲SECTORS (FMS ̲MOVING,SECTOR ̲SPEC,MIRM)(CC)
OF
ERROR? CASE ANALYZE ̲ERROR (CC,HW,1) OF
HW? INF.CC = CC
INF.VOLUME = MIR ̲MOVING
REPORT ̲ERROR(LOAD ̲FAILED,INF)
PU ̲DOWN(LOAD ̲FAILED;INF)
END ̲CASE
END ̲CASE
CASE FINISH ̲DUALIZE (FMS ̲MOVING,MIRM)(CC) OF
ERROR? ANALYZE ̲ERROR(CC,0)
END ̲CASE
END ̲MOUNT ̲DUALIZABLE ̲MOVING
Fig. 4.2.9.4.2.5-6 (3/3)
PROCEDURE
START ̲REMAINING ̲PROCESSES
VAR I : INTEGER
BEGIN
I = COPSY ̲P ̲NO
LOOP
I = I + 1
PROCESS ̲TABLE (I).STATUS EQ CREATED ?
START ̲PROCESS (I)
I EQ NO ̲OF ̲PROCESSES ? EXIT
END LOOP
END PROCEDURE
Fig. 4.2.9.4.2.5-7
PROCEDURE
START ̲PROCESS (PROC ̲P ̲NO : INTEGER)
VAR OBJECT : OBJECT ̲INDEX
BEGIN
OBJECT = PROCESS ̲TABLE (PROC ̲P ̲NO).OBJECT
CASE RESUME (OBJECT) OF
ERROR ? ANALYZE ̲ERROR (CC, 0)
OK ? PROCESS ̲TABLE (PROC ̲P ̲NO).STATUS = RESUMED
END CASE
END PROCEDURE START ̲PROCESS
Fig. 4.2.9.4.2.5-8
PROCEDURE START ̲LINE ̲PROCESSES
INTEGER I
BEGIN
I = SUPV ̲P ̲NO ̲1
LOOP
I = I + 1
START ̲PROCESS (I)
I EQ NO ̲OF ̲PROCESSES ? EXIT
END LOOP
END START ̲LINE ̲PROCESSES
Fig. 4.2.9.4.2.5-9
PROCEDURE START ̲WAMCO ̲SET ̲PU ̲STATUS
VAR PU ̲ID : PU1..PU2
BEGIN
CASE PU ̲NO OF
1 ? PU ̲ID = PU1
2 ? PU ̲ID = PU2
END CASE
CONFIG ̲TABLE.PU ̲N(PU ̲NO) = ACTIVE
CONF ̲DISPLAY (SET ̲STATUS, PU ̲ID, ACTIVE)
NOTIFY ̲LONG (WAMCO ̲COR, START ̲AC)
END ̲START ̲WAMCO ̲SET ̲PU ̲STATUS
Fig. 4.2.9.4.2.5-10
PROCEDURE DEFINE ̲Q ̲PROFILES
VAR G ̲INF : COPSY ̲GARBLE ̲PARAMS
BEGIN
WAIT ̲OPSEM(LONG ̲OS) (COUNT ̲ANSWER)
COUNT ̲ANSWER.CMD ̲TYPE = COUNT ̲REPLY
NO ̲OF ̲OUTSTANDING ̲ANSWERS =
NO ̲OF ̲VDUS + NO ̲OF ̲SADS + NO ̲OF ̲EXCS
COMMON ̲NOTIFY ̲LINE ̲COROUTINE (SET ̲ACCESS ̲PROFILES,
0)
LOOP
WAIT ̲OPSEM (CFH ̲OS) (LONG ̲OP))
CASE LONG ̲OP.CMD ̲TYPE OF
DEVICE ̲ERROR, WDP ̲CMD ?
HW ̲REPORT ̲HANDLING (LONG ̲OP)
COUNT ̲REPLY ? EXIT ̲LOOP
OTHER ? G ̲INF.ERROR ̲TYPE = COPSY ̲LONG
̲ERROR
G ̲INF.USER ̲ACTION = CONTINUE
G ̲INF.ERROR ̲COR = CFH ̲COR
G ̲INF.LOC = DEFINE ̲Q ̲PROFILES
̲PROC
G ̲INF.ERROR ̲INFO (1) = CMD ̲TYPE
̲ERROR
COPSY ̲SEND ̲GARBLE (LONG ̲OP, G
̲INF)
END CASE
END LOOP
SIGNAL ̲OPSEM (LONG ̲OS, LONG ̲OP)
END ̲DEFINE ̲Q ̲PROFILES
Fig. 4.2.9.4.2.5-11
PROCEDURE AWAIT ̲GO ̲ACTIVE
VAR G ̲INF : COPSY ̲GARBLE ̲PARAMS
INIT G ̲INF : ERROR ̲TYPE = COPSY ̲LONG ̲ERROR
G ̲ING : USER ̲ACTION = CONTINUE
G ̲INF : ERROR ̲COR = CFH ̲COR
G ̲INF : ERROR ̲LOC = AWAIT ̲GO ̲ACTIVE ̲PROC
BEGIN
LOOP
WAIT ̲OPSEM (CFH ̲OS) (LONG ̲OP)
EQVIVALENCE (LONG ̲OP.CMD, CMD : WDP ̲REP ̲COMMAND)
EQVIVALENCE (LONG ̲OP.INF (1).BYTE, SUB ̲CMD
: WDP ̲INFO)
EQVIVALENCE (LONG ̲OP.INF (15).BYTE, START ̲DTG:DTG
̲TYPE)
CASE LONG ̲OP. CMD ̲TYPE OF
WDP ̲CMD ? (CMD EQ CCB ̲REPORT AND ?
SUB
̲CMD
EQ
GO
̲SB
̲AC
START ̲DTG.SUFFIX=#36
SHIFT
8 + #31
SET ̲TIME(START ̲DTG)
EQVIVALENCE(LONG
̲OP.INF(1),
ROP ̲INF:ARRAY(1..28)
OF BYTE)
REPORT ̲ERROR(WDP
̲MON ̲REPORT,
REP ̲INF)
EXIT
G ̲INF.ERROR ̲INFO (1)=ILLEGAL ̲CMD
COPSY ̲SEND ̲GARBLE (LONG ̲OP, G ̲INF)
OTHER ? G ̲INF.ERROR ̲INFO (1) = ILLEGAL
̲CMD ̲TYPE
COPSY ̲SEND ̲GARBLE (LONG ̲OP, G ̲INF)
END ̲CASE
END LOOP
END ̲AWAIT ̲GO ̲ACTIVE
Fig. 4.2.9.4.2.5-12
PROCEDURE
START ̲MMS
VAR ROOT ̲DIR,: FDCB ̲INDEX
VAR SECP : SECURITY ̲PARAMS
VAR CC : INTEGER
BEGIN
(START ̲OP ̲TYPE ̲D EQ SB1) or ? START ̲PARAM
= WARM2
(START ̲UP ̲TYPE ̲D EQ SB2)
START ̲PARAM = START ̲UP ̲TYPE ̲D
EQVIVALENCE (WRK,SEL ̲PARAM : SECURITY ̲PARMETER
̲TYPE)
GET ̲SYSTEM ̲PARAMETER (SECURITY ̲PARAMETER) (SEC
̲PARAM)
SECP. SECURITY ̲INTERROGATION ̲PROFILE =
SEC ̲PARAM.INTERROGATION ̲PROFILE
SECP.SECURITY ̲WARNING ̲PROFILE =
SEC ̲PARAM.WARNING ̲PROFILE
CASE SET ̲SECURITY ̲PARAMETERS (SECP) (CC) OF
ERROR ? ANALYZE ̲ERROR (CC, 0)
END CASE
GET ̲ROOT ̲MOV (MIR ̲MOVING) (ROOT ̲DIR)
LOOKUP (ROOT ̲DIR, MMSSTORAGE) (MMS ̲STORAGE
̲FDCB)
"give the MMS ̲STORAGE file the maximum profile
CASE CHANGE ̲PROFILE (MMS ̲STORAGE ̲FDCB,31)(CC)
OF
ERROR? ANALYZE ̲ERROR(CC.0)
END ̲CASE
START ̲SYSTEM (WRK,START ̲PARAM, MMS ̲FILE, SIZE(WRK))
DIS ̲MANTLE (ROOT ̲DIR)
END ̲START ̲MMS
Fig. 4.2.9.4.2.5-13
PROCEDURE
SAVE ̲OLD ̲CLOCK
VAR CLOCK ̲CONTENTS : DTG ̲TYPE
BEGIN
GET ̲SYSTEM ̲PARAMETER (CURRENT ̲CLOCK) (CLOCK ̲CONTENTS)
SET ̲SYSTEM ̲PARAMETER (OLD ̲CLOCK, CLOCK ̲CONTENTS)
END ̲SAVE ̲OLD ̲CLOCK
Fig. 4.2.9.4.2.5-14
4.2.9.4.3 O̲N̲L̲I̲N̲E̲ ̲O̲P̲E̲R̲A̲T̲I̲O̲N̲ ̲M̲O̲D̲U̲L̲E̲
4.2.9.4.3.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The online operation module receives:
- CMI commands and
- Hardware errorreports from
- FMS
- TMS
- WDP
The hardware errorreports are sent to the Hardware-errorhandling
module.
The CMI commands are executed in the On-line-operation
module and a reply is sent to the CMI upon completion
of execution.
The CMI commands falls into 3 groups:
- PU reconfiguration
- Software reconfiguration
- Peripheral reconfiguration
a) P̲U̲ ̲r̲e̲c̲o̲n̲f̲i̲g̲u̲r̲a̲t̲i̲o̲n̲
The PU reconfiguration commands contains:
- an ordered close-down of the standby PU
- an ordered close-down of the active PU
- an ordered switchover to the standby PU.
An ordered close-down of the standby PY is implemented
by requesting the watchdog to reset the standby
PU via the CCB.
An ordered close-down of the active PU is handled
in the ordered-close-down module.
An ordered switchover consists of an ordered close-down
of the active PU and a subsequent switch to the
standby PU executed via the WDP. The switchover
is also handled in the ordered close-down module.
b) S̲o̲f̲t̲w̲a̲r̲e̲ ̲r̲e̲c̲o̲n̲f̲i̲g̲u̲r̲a̲t̲i̲o̲n̲
The software reconfiguration commands are:
- set of trace mask
- copy of software load files
- adjust clock
- print software version numbers
The setting of trace mask is only applicable, when
the system is in "trace mode", which is entered
if a global boolean TRACE ̲MODE is set.
In trace mode each process opens a trace file and
via the "set trace mask" command specific system
calls for specific processes can be traced.
The copying of software consists of:
- copying of system software or application software
or a single patchfile
- from the offline disk to the mirrored disks
or
- from the floppy disk to the offline disk
- copying the garble file from the mirrored disks
to the offline or floppy disk.
The adjusted clock is received from CMI and is
set.
The print software versions commands maked CFH
print the version numbers of:
- the patchfiles
- the CONFIG file in the directions
- SSC ̲DIR ̲INITIAL
- SSC ̲DIR ̲MODIFIED
for the disk specified in the operator command.
c) P̲e̲r̲i̲p̲h̲e̲r̲a̲l̲ ̲r̲e̲c̲o̲n̲f̲i̲g̲u̲r̲a̲t̲i̲o̲n̲
Peripheral reconfiguration relates to three areas:
- disk reconfiguration
- LTU and LTU line reconfiguratioan
- BSM ̲X, LTUX and LTUX line reconfiguration.
The peripheral reconfiguration commands are generally
executed identically.
The CMI sends an updated version of an entry in
a porttable.
CFH reads the old entry and subsequent actions
are based upon a comparison of the old and the
new entry.
The actions includes:
- update of the porttable
- update of the WDP ̲VDU configuration display.
c1) D̲i̲s̲k̲ ̲r̲e̲c̲o̲n̲f̲i̲g̲u̲r̲a̲t̲i̲o̲n̲
The operator can
- assign/deassign
- the floppy disk
- the offline disk
- mount/dismount
- the floppy disk
- include/exclude
- a single mirrored disk.
c2) L̲T̲U̲ ̲a̲n̲d̲ ̲L̲T̲U̲ ̲l̲i̲n̲e̲ ̲r̲e̲c̲o̲n̲f̲i̲g̲u̲r̲a̲t̲i̲o̲n̲ ̲
The operator is only allowed to change a porttable
for a LTU/LTU-line, if the corresponding line(s)
are not connected (by the supervisor in a profile)
LTUs and LTU-lines are described in separate porttables.
For the LTU-line porttable each entry contains
a "chain status", which indicates, if:
- the LTU line is in service (set by the operator)
and
- the associated LTU is in-service or not.
This status is used by the supervisor, when examining
if a line is available.
The operator commands gives the following possibilities:
- setting a LTU/LTU-line in-service/out-of-service.
This implies creation/dismandling of TMS subdevices-
For LTUs a bootload is implied
- specifying line characteristica, e.g. speed/alphabetic.
When setting a LTU in-service it is examined, if
the "chain status" for involved LTU-lines becomes
in-service. If so, the appropriate subdevices are
created and the porttable entries are updated.
When taking an LTU out of service then the associated
lines "chain status" is set out-of-service.
c3) B̲S̲M̲ ̲X̲,̲ ̲L̲T̲U̲X̲ ̲a̲n̲d̲ ̲L̲T̲U̲X̲ ̲L̲i̲n̲e̲ ̲r̲e̲c̲o̲n̲f̲i̲g̲u̲r̲a̲t̲i̲o̲n̲
BSM ̲X, LTUX and LTUX ̲Line handling is identical
to LTU/LTU-line handling, but for BSM ̲Xs the WDP
is commanded to connect the BSM ̲X( via the CCB)
to either
- the active TDX bus
- the offline TDX bus
or to none of the busses.
4.2.9.4.3.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) ONLINE ̲OPERATION
b) ONLINE ̲OPERATION (R6)
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̲
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R7 destr.
4.2.9.4.3.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
The on-line-operations module references the procedure/modules
specified in fig. 4.2.9.4.3.3-1 through to 4.2.9.4.3.3-3
4.2.9.4.3.2-2-3
4.2.9.4.3.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
COPSY ̲GARBLE ̲PARAMS : SSC.COMMON
ACTIVE, STANDBY : DBD
FILE ̲NAME,
FDCB ̲INDEX,
VOLUME ̲NAME : DAMOS.IOS
MODIFY ̲INF
ORDERED ̲SWITCHOVER,
ORDERED ̲CLOSE ̲DOWN : CFH.VARIOUS
LTUX ̲LINE ̲REC,
LTUX ̲REC,
BSMX ̲REC,
LTU ̲LINE ̲REC,
LTU ̲REC,
DISK ̲PARAM : DBD
RELATIVE ̲TIME ̲TYPE,
PU ̲TYPE,
SW ̲TO ̲BE ̲LOADED,
TRACE ̲INF : SSC.COMMON
a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LONG ̲OP,
WRK,
KEY ̲BUF,
SINGLE ̲BUF,
READ ̲MASK : CFH.VARIOUS
a3) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
CMI ̲COMMANDS ̲PROC,
ONLINE ̲OPERATION ̲PROC,
ILLEGAL ̲CMD ̲TYPE,
ILLEGAL ̲CMD : CFH.VARIOUS
VOLUME ̲ERROR,
DISK ̲ERROR,
MIR ̲MOVING,
SYS ̲GEN : DBD
RESET ̲ALL ̲PRIORITIES ̲NO : SSC.COMMON
LINE ̲CONNECTED ̲IN ̲PROFILE,
LAST ̲MIRRORED ̲DISK,
EXEC ̲OK,
COPY ̲ERROR ̲X,
NO ̲OPERATION,
HW ̲ERROR,
WRONG ̲VOLUME ̲NAME ̲X,
VOLUME ̲NAME ̲IS ̲USED ̲X,
VOLUME ̲MOUNTED ̲X,
ILLEGAL ̲PROCESS ̲NO : SSC.COMMON
a4) T̲a̲b̲l̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LTUX ̲LINE ̲TABLE, (m)
LTUX ̲TABLE, (m)
BSM ̲X ̲TABLE, (m)
LTU ̲LINE ̲TABLE, (m)
LTU ̲TABLE, (m)
DISK ̲TABLE (m) : DBD
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
All tables referenced are updated.
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR COPY ̲INF : MODIFY ̲INF
VAR INF : RECORD
CC : INTEGER
FILE : FILE ̲NAME
END
VAR G ̲INF : COPSY ̲GARBLE ̲PARAMS (SSC.COMMON)
VAR CHECK ̲OK : BOOLEAN
VAR DSK : MIR1 ̲DISK .. OFL ̲DISK
VAR STANDBY ̲PU : PU1..PU2
OLD ̲REC : LTUX ̲LINE ̲REC
"local variable for LTUX ̲LINE ̲OP ̲CMD. Used to
keep
the old description of the LTUX ̲LINE.
OLD ̲REC : LTUX ̲REC
"local variable for LTUX ̲OP ̲CMD. Used to keep
the
old description of the LTUX.
OLD ̲REC : BSM ̲X ̲REC
"local variable for BSM ̲X ̲OP ̲CMD. Used to keep
the
old description of the BSM ̲X.
OLD ̲REC : LTU ̲LINE ̲REC
"local variable for LTU ̲LINE ̲OP ̲CMD. Used to keep
the old description of the LTU ̲LINE
OLD ̲REC : LTU ̲REC
"local variable for LTU ̲OP ̲CMD. Used to keep the
old description of the LTU.
VAR OLD ̲REC : DISK ̲PARAM
"local variable for DISK ̲OP ̲CMD. Used to keep
the old description of the disk.
VAR STATUS : DISK ̲STATUS
"local variable for DISCARD ̲ACTION. Used to
keep
the status of a mirrored disk.
VAR ACTION : DISK ̲ACTION
"used top keep the action to be performed on
a
disk.
4.2.9.4.3.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
a) O̲N̲L̲I̲N̲E̲ ̲O̲P̲E̲R̲A̲T̲I̲O̲N̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Serves the CFH input semaphore CFH ̲OS and dispatches
depending on the CMD ̲TYPE. Upon command execution
the operation is released.
The online operation procedure runs in a "forever"
loop.
F̲l̲o̲w̲g̲r̲a̲m̲:̲ Figure 4.2.9.4.3.5-1
I̲n̲t̲e̲r̲f̲a̲c̲e̲
Standard i.e. the interface contains only a LINK
call register. All return registers are destroyed.
b) C̲M̲I̲ ̲C̲M̲D̲S̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Depending on the LONG ̲OP ̲CMD the procedure will
impress LONG ̲OP ̲INF a type and call a procedure
for further handling.
F̲l̲o̲w̲g̲r̲a̲m̲:̲ See 4.2.9.4.3.5-2
I̲n̲t̲e̲r̲f̲a̲c̲e̲
Standard
c) L̲T̲U̲X̲ ̲L̲I̲N̲E̲ ̲O̲P̲ ̲C̲M̲D̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Finds the old description, OLD ̲REC, for the LTUX
̲LINE. Calls LTUX ̲LINE ̲HANDLE for further handling.
Sends a reply to CMI.
F̲l̲o̲w̲g̲r̲a̲m̲:̲ Figure 4.2.9.4.3.5-3
I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) LTUX ̲LINE ̲OP ̲CMD (NEW ̲REC:LTUC ̲LINE ̲REC)
b) LTUX ̲LINE ̲OP ̲CMD (R0, R6)
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 pointer to NEW ̲REC
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R7 destr.
d) L̲T̲U̲X̲ ̲O̲P̲ ̲C̲M̲D̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Finds the old description, OLD ̲REC, for the LTUX.
Calls LTUX ̲HANDLE for further handling. Sends reply
to CMI.
F̲l̲o̲w̲g̲r̲a̲m̲:̲ Figure 4.2.9.4.3.5-4
I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) LTUX ̲OF ̲CMD (NEW ̲REC : LTUX ̲REC)
b) LTUX ̲OP ̲CMD (R0, R6)
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 pointer to NEW ̲REC
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R7 destroyed
e) B̲S̲M̲ ̲X̲ ̲O̲P̲ ̲C̲M̲D̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Finds the old description, OLD ̲REC, for the BSM
̲X. Calls BSM ̲X ̲HANDLE and BSM ̲X ̲LTUX ̲CONTROL for
further handling. Sends a reply to CMI.
F̲l̲o̲w̲g̲r̲a̲m̲:̲ Figure 4.2.9.4.3.5-5
I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) BSM ̲X ̲OP ̲CMD (NEW ̲REC : BSM ̲X ̲REC)
b) BSM ̲X ̲OP ̲CMD (R0, R6)
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 pointer to NEW ̲REC
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R7 destr.
f) L̲T̲U̲ ̲L̲I̲N̲E̲ ̲O̲P̲ ̲C̲M̲D̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Finds the old description, OLD ̲REC, for the LTU
̲LINE. Calls LTU ̲LINE ̲HANDLE for further handling.
Sends a reply to CMI.
F̲l̲o̲w̲g̲r̲a̲m̲:̲ Figure 4.2.9.4.2.5-6
I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) LTU ̲LINE ̲OP ̲CMD (NEW ̲RED : LTU ̲LINE ̲REC)
b) LTU ̲LINE ̲OP ̲CMD (R0, R6)
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 pointer to NEW ̲REC
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R7 destr.
g) L̲T̲U̲ ̲O̲P̲ ̲C̲M̲D̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Finds the old description, OLD ̲REF, for the LTU
in LTU ̲TABLE. Calls LTU ̲HANDLE. Sends a reply to
CMI
F̲l̲o̲w̲g̲r̲a̲m̲:̲ Figure 4.2.9.4.3.5-7
I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) LTU ̲OP ̲CMD (NEW ̲REC : LTU ̲REC)
b) LTU ̲OP ̲CMD (R0, R6)
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 pointer to NEW ̲REC
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R7 destr.
h) D̲I̲S̲K̲ ̲O̲P̲ ̲C̲M̲D̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Finds the old description, OLD ̲REC, for the disk.
For the different kind of disks it finds the action
to be performed. This is done in a CASE ̲statement
and by the procedure call DETERMINE ̲ACTION. The
action to do is performed, and at last a reply
is sent to CMI.
F̲l̲o̲w̲g̲r̲a̲m̲:̲ Figure 4.2.9.4.3.5-8
I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) DISK ̲OP ̲CMD (NEW ̲REC : DISK ̲PARAM)
b) DISK ̲OP ̲CMD (R0, R6)
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 pointer to NEW ̲REC
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R7 destr.
i) D̲E̲T̲E̲R̲M̲I̲N̲E̲ ̲A̲C̲T̲I̲O̲N̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Depending of the kind of disk, mirrored, floppy
or offline, this procedure determines the action
to do as described in table 4.2.9.4.3.4-1.
F̲l̲o̲w̲g̲r̲a̲m̲:̲ Figure 4.2.9.4.3.5-9
I̲n̲t̲e̲r̲f̲a̲c̲e̲
a) DETERMINE ̲ACTION (DISK:KIND ̲OF ̲DISK)
(ACTION:DISK ̲ACTION)
b) DETERMINE ̲ACTION(R0, R7, R6)
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 DISK
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R7 ACTION
R0 - R6 destr.
j) A̲C̲T̲I̲O̲N̲ ̲O̲N̲ ̲D̲I̲S̲K̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
The ACTION, which is given as call parameter, is
performed. The DISK ̲TABLE is updated and the configuration
display on the operator VDUs is updated.
F̲l̲o̲w̲g̲r̲a̲m̲:̲ Figure 4.2.9.4.3.5-10
I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) ACTION ̲ON ̲DISK (ACTION:DISK ̲ACTION) (CC:INTEGER)
b) ACTION ̲ON ̲DISK (R0, R7, R6)
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̲
R 0 ACTION
R 6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R6 destr.
R7 CC
k) D̲I̲S̲C̲A̲R̲D̲ ̲A̲C̲T̲I̲O̲N̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Find the status of the other mirrored disk, than
the one which the CMI-command should be performed.
Depending on this status the last mirrored disk
is excluded.
F̲l̲o̲w̲g̲r̲a̲m̲:̲ Figure 4.2.9.4.3.5-11
I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) DISCARD ̲ACTION ( ) (CC:INTEGER)
b) DISCARD ̲ACTION (R7, R6)
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̲
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R6 destr.
R7 CC
l) O̲R̲D̲E̲R̲E̲D̲ ̲C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲ ̲O̲P̲ ̲C̲M̲D̲ ̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Depending on the PU to close-down ORDERED ̲CLOSE
̲DOWN or WDP ̲CONTROL is called. If it is the standby
PU there shall be closed down, the configuration
display is updated and a reply is sent to CMI.
F̲l̲o̲w̲g̲r̲a̲m̲:̲ Figure 4.2.9.4.3.5-12
I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) ORDERED ̲CLOSE ̲DOWN (PU:(ACTIVE ̲PU, STANDBY
̲PU),
MINUTES:RELATIVE ̲TIME ̲TYPE)
b) ORDERED ̲CLOSE ̲DOWN (R0, R1, R6)
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 PU
R1 MINUTES
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R6 destr.
m) S̲E̲T̲ ̲T̲R̲A̲C̲E̲ ̲M̲A̲S̲K̲ ̲O̲P̲ ̲C̲M̲D̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Invokes the Kernel log trace procedures:
- set log priority
- reset log priority
F̲l̲o̲w̲g̲r̲a̲m̲:̲ Figure 4.2.9.4.3.5-13
I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) SET ̲TRACE ̲MASK ̲OP ̲CMD (TRACE ̲INFO:TRACE ̲INF)
b) SET ̲TRACE ̲MASK ̲OP ̲CMD (R0, R6)
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 pointer to TRACE ̲INFO
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R7 destr.
PROCEDURE
ONLINE ̲OPERATION
VAR G ̲INF : COPSY ̲GARBLE ̲PARAMS
INIT G ̲INF.ERROR ̲TYPE = COPSY ̲LONG ̲ERROR
G ̲INF.USER ̲ACTION = CONTINUE
G ̲INF.ERROR ̲COR = CFH ̲COR
G ̲INF.ERROR ̲LOC = ONLINE-OPERATION ̲PROC
BEGIN
LOOP ̲FOREVER
WAIT ̲OPSEM (CFH ̲OS) (LONG ̲OP)
CASE LONG ̲OP.CMD ̲TYPE OF
DEVICE ̲ERROR,
WDP ̲CMD ? HW ̲ERROR ̲HANDLING (LONG ̲OP)
CMI ̲CMD ̲L ? CMI ̲CMDS
OTHER ? G ̲INF.ERROR ̲INFO (1) = ILLEGAL
̲CMD ̲TYPE
COPSY ̲SEND ̲GARBLE (LONG ̲OP, G
̲INF)
END CASE
SIGNAL ̲OPSEM (LONG ̲OS, LONG ̲OP)
END ̲LOOP ̲FOREVER
END ̲ONLINE OPERATION
Fig. 4.2.9.4.3.5-1
PROCEDURE CMI ̲CMDS
VAR COPY ̲INF: MODIFY ̲INF
VAR ̲INF : RECORD
CC : INTEGER
FILE : FILE ̲NAME
END
VAR G ̲INF : COPY ̲GARBLE ̲PARAMS
INIT G ̲INF. ERROR ̲TYPE = COPSY ̲LONG ̲ERROR
G ̲INF. USER ̲ACTION = CONTINUE
G ̲INF. ERROR ̲COR = CFH ̲COR
G ̲INF. ERROR ̲LOC = CMI ̲CMDS ̲PROC
BEGIN
EQVIVALENCE (LONG ̲OP.REP, Q ̲CONTENTS : REPLY ̲TYPE)
EQVIVALENCE (LONG ̲OP.INF (1), CMI ̲QEL: QEL ̲REFERENCE)
CASE LONG ̲OP.CMD OF
LTUX ̲LINE ̲CONTROL? EQVIVALENCE(LONG ̲OP.INF(2),NEW
̲REC:
LTUX ̲LINE ̲REC)
LTUX ̲LINE ̲OP ̲CMD (NEW
̲REC)
LTUX ̲CONTROL? EQVIVALENCE(LONG ̲OP.INF(2),
NEW ̲REC:
LTUX ̲REC)
LTUX ̲OP ̲CMD (NEW ̲REC)
BSM ̲X ̲CONTROL? EQVIVALENCE(LONG ̲OP.INF(2),NEW
̲REC:
BSM ̲X ̲REC)
BSM ̲X ̲OP ̲CMD (NEW ̲REC)
LTU ̲LINE ̲CONTROL? EQVIVALENCE(LONG ̲OP.INF(2),NEW
̲REC :
LTU ̲LINE ̲REC)
LTU ̲LINE ̲OP ̲CMD(NEW ̲REC)
LTU ̲CONTROL? EQVIVALENCE(LONG ̲OP.INF(2),NEW
̲REC:
LTU ̲REC)
LTU ̲OP ̲CMD (NEW ̲REC)
DISK ̲DRIVE ̲ASSIGNMENT? EQVIVALENCE(LONG ̲OP.INF(2),
NEW ̲REC:DISK ̲PARAM)
DISK ̲OP ̲CMD (NEW ̲REC)
SWITCHOVER? EQVIVALENCE(LONG ̲OP.INF(2),TIME
:
RELATIVE ̲TIME ̲TYPE)
ORDERED ̲CLOSE ̲DOWN(INITIAL,TIME,
ORDERED ̲SWITCHOVER)
CONTINUE Figure 4.2.9.4.3.5-2 (1/3)
PROCEDURE CMI ̲CMDS Continued
CLOSE ̲DOWN ̲SYS? EQVIVALENCE(LONG
̲OP.INF(2),PU:
ACTIVE..STANDBY),
EQVIVALENCE (LONG ̲OP.INF(3),TIME
:
RELATIVE ̲TIME ̲TYPE)
ORDERED ̲CLOSE ̲DOWN ̲OP
̲CMD (PU,TIME)
CLOSE ̲DOWN ̲FINAL? ORDERED ̲CLOSE ̲DOWN (FINAL,0,0)
TEMCO ̲DEMCO ̲CEMCO ̲CLOSED? ORDERED ̲CLOSE
̲DOWN(LINE ̲PRO-
CESSES ̲CLOSED,0,0)
CMD ̲SEH ̲CLOSED? ORDERED ̲CLOSE ̲DOWN(COPSY
̲ENVIRON-
MENT ̲CLEANED ̲UP, 0,0
CLOSE ̲DOWN ̲TERMINATED? ORDERD ̲CLOSE ̲DOWN(TERMINATED,0,0)
LOAD ̲MODIFIED ̲SW ? EQVIVALENCE(LONG ̲OP.INF(2),
SW ̲TO ̲BE ̲LOADED ̲REC:SW
̲TO ̲BE ̲LOADED)
COPY ̲MODIFIED ̲SOFTWARE(SW
̲TO ̲BE ̲LOA-
DED ̲REC) (COPY ̲INF)
COPY ̲INF.CC EQ 0 ?
COPY ̲INF.DISK EQ MIRRORED1?
PU ̲DOWN
(COPY ̲ERROR,COPY
̲INF)
REPORT ̲ERROR (COPY ̲ERROR,COPY
̲INF)
COPY ̲INF.CC GE 256?
COPY ̲INF.CC
= COPY ̲ERROR ̲X
SEND ̲SSC ̲REPLY (Q ̲CONTENTS,CMI
̲QEL,
COPY ̲INF.CC)
Fig. 4.2.9.4.3.5-2 (2/3)
PROCEDURE CMI ̲CMDS continued
PRINT ̲SW ̲VERSION ? EQUIVALENCE(LONG ̲OP.INF(2),DISK
̲SPEC :
DISK ̲SW ̲VERSION)
PRINT ̲SW ̲VERSIONS ̲OP ̲CMD(DISK
̲SPEC)
(INF.CC, INF.FILE)
INF.CC EQ 0 ?
DISK ̲SPEC EQ OFFLINE ̲SW ?
PU ̲DOWN (LOAD ̲ERROR,INF)
INF.CC GE 256? INF.CC
= COPY ̲ERROR ̲X
REPORT ̲ERROR (LOAD
̲ERROR,INF)
SEND ̲SSC ̲REPLY
(Q ̲CONTENTS,
CMI ̲QEL,INF.CC)
SET ̲TRACE ̲MASK ? EQVIVALENCE(LONG ̲OP.INF(2),TRACE
̲INFO:
TRACE
̲INF)
SET ̲TRACE ̲MASK ̲OP ̲CMD(TRACE
̲INFO)
ADJUST ̲TIME ? EQVIVALENCE(LONG ̲OP.INF(2),NEW
̲DTG :
SYSTEM ̲TIME) SET ̲TIME(NEW
̲DTG)
DELETE ̲CIF
OPERATOR ̲ONLY ̲TERMINATED ? CC=NOT ̲OPERATOR
̲ONLY ̲MODE
SEND ̲SSC
̲REPLY(Q ̲CONTENTS,
CMI ̲QEL, CC)
OTHER ? G ̲INF.ERROR ̲INFO (1) = ILLEGAL ̲CMD
COPSY ̲SEND ̲GARBLE (LONG ̲OP, G ̲INF)
SEND ̲SSC ̲REPLY(Q ̲CONTENTS,CMI ̲QEL,CC)
END CASE LONG ̲OP.CMD
END PROCEDURE CMI ̲CMDS
Fig. 4.2.9.4.3.5-2 (3/3)
PROCEDURE
LTUX ̲LINE ̲OP ̲CMD (NEW ̲REC:LTUX ̲LINE ̲REC)
VAR CHECK ̲OK : BOOLEAN
VAR OLD ̲REC : LTUX ̲LINE ̲REC
BEGIN
CC = EXEC ̲OK
CHECK ̲PROFILE (LTUX ̲LINE ̲TABLE, NEW ̲REC.NO,1)(CHECK
̲OK)
CHECK ̲OK EQ FALSE ? CC = LINE ̲CONNECTED ̲IN ̲PROFILE
KEY ̲BUF.KEY = NEW ̲REC.NO
SEARCH ̲ENTRY (LTUX ̲LINE ̲TABLE, KEY ̲BUF, ALL ̲MASK,
SEND ̲BUF)
(OLD ̲REC)
LTUX ̲LINE ̲HANDLE (OLD ̲REC,NEW ̲REC)
SEND ̲SSC ̲REPLY (Q ̲CONTENTS, CMI ̲QEL, CC)
END LTUX ̲LINE ̲OP ̲CMD
Fig. 4.2.9.4.3.5-3
PROCEDURE
LTUX ̲OP ̲CMD (NEW ̲REC : LTUX ̲REC)
VAR CHECK ̲OK : BOOLEAN
VAR OLD ̲REC : LTUX ̲REC
BEGIN
CHECK ̲PROFILE(LTUX ̲LINE ̲TABLE, 4*(NEW ̲REC.NO-1),4)(CHECK
̲OK)
CHECK ̲OK EQ FALSE ? CC = LINE ̲CONNECTED ̲IN ̲PROFILE
KEY ̲BUF.KEY = NEW ̲REC.NO
SEARCH ̲ENTRY (LTUX ̲TABLE, KEY ̲BUF, ALL ̲MASK,SEND
̲BUF)
(OLD ̲REC)
LTUX ̲HANDLE (OLD ̲REC, NEW ̲REC) (CC)
SEND ̲SSC ̲REPLY (Q ̲CONTENTS, CMI ̲QEL, CC)
END LTUX ̲OP ̲CMD
Fig. 4.2.9.4.3.5-4
PROCEDURE
BSM ̲X ̲OP ̲CMD (NEW ̲REC:BSM ̲X ̲REC)
VAR CHECK ̲OK : BOOLEAN
VAR OLD ̲REC : BSM ̲X ̲REC
BEGIN
CHECK ̲PROFILE (LTUX ̲LINE ̲TABLE, 8 * (NEW ̲REC.NO-1)+1,
8)
(CHECK ̲OK)
CHECK ̲OK EQ FALSE ? CC = LINE ̲CONNECTED ̲IN ̲PROFILE
KEY ̲BUF.KEY=NEW ̲REC.NO
SEARCH ̲ENTRY (BSM ̲X ̲TABLE, KEY ̲BUF, ALL ̲MASK, SEND
̲BUF)
(OLD ̲REC)
BSM ̲X ̲HANDLE (OLD ̲REC) (CC)
CC NE 0 ?
BSM ̲X ̲LTUX ̲CONTROL (OLD ̲REC, NEW ̲REC) (CC)
SEND ̲SSC ̲REPLY (Q ̲CONTENTS, CMI ̲QEL, CC)
END BSM ̲X ̲OP ̲CMD
Fig. 4.2.9.4.3.5-5
PROCEDURE
LTU ̲LINE ̲OP.CMD (NEW ̲REC : LTU ̲LINE ̲REC)
VAR CHECK ̲OK : BOOLEAN
VAR OLD ̲REC : LTU ̲LINE ̲REC
BEGIN
CC = EXEC ̲OK
CHECK ̲PROFILE (LTU ̲LINE ̲TABLE, NEW ̲REC.NO,1) (CHECK
̲OK)
CHECK ̲OK EQ FALSE ? CC = LINE ̲CONNECTED ̲IN ̲PROFILE
KEY ̲BUF.KEY = NEW ̲REC.NO
SEARCH ̲ENTRY (LTU ̲LINE ̲TABLE, KEY ̲BUF, ALL ̲MASK,
SEND ̲BUF)
(OLD ̲REC)
LTU ̲LINE ̲HANDLE (OLD ̲REC, NEW ̲REC)
SEND ̲SSC ̲REPLY (Q ̲CONTENTS, CMI ̲QEL, CC)
END LTU ̲LINE ̲OP ̲CMD
Fig. 4.2.9.4.3.5-6
PROCEDURE
LTU ̲OP ̲CMD (NEW ̲REC : LTU ̲REC)
VAR CHECK ̲OK : BOOLEAN
VAR OLD ̲REC : LTU ̲REC
BEGIN
CHECK ̲PROFILE (LTU ̲LINE ̲TABLE, 2*(NEW ̲REC.NO-1),2)(CHECK
̲OK)
CHECK ̲OK EQ FALSE ? CC = LINE ̲CONNECTED ̲IN ̲PROFILE
KEY ̲BUF.KEY=NEW ̲REC.NO
SEARCH ̲ENTRY(LTU ̲TABLE,KEY ̲BUF,ALL ̲MASK,SEND ̲BUF)(OLD
̲REC)
LTU ̲HANDLE (OLD ̲REC, NEW ̲REC) (CC)
SEND ̲SSC ̲REPLY (Q ̲CONTENTS, CMI ̲QEL, CC)
END LTU ̲OP ̲CMD
Fig. 4.2.9.4.3.5-7
PROCEDURE
DISK ̲OP ̲CMD (NEW ̲REC : DISK ̲PARAM)
VAR OLD ̲REC : DISK ̲PARAM
VAR ACTION : DISK ̲ACTION
BEGIN
KEY ̲BUF.KEY = NEW ̲REC.DISK
SEARCH ̲ENTRY(DISK ̲TABLE,KEY ̲BUF,ALL ̲MASK,SEND ̲BUF)(OLD
̲REC)
CASE NEW ̲CMD.DISK OF
MIRRORED1,
MIRRORED2 ? DETERMINE ̲ACTION (MIRRORED2) (ACTION)
FLOPPY ̲DISK ? DETERMINE ̲ACTION (FLOPPY ̲DISK)
(ACTION)
OFFLINE ̲DISK ? DETERMINE ̲ACTION (OFFLINE ̲DISK)
(ACTION)
END CASE NEW ̲CMD.DISK
ACTION EQ NO ̲OP ? CC = NO ̲OPERATION
ACTION EQ REFUSE ? CC = STATUS ̲CHANGE ̲ILLEGAL
ACTION EQ UPDATE ?
CC = EXEC ̲OK
UPDATE ̲ENTRY (DISK ̲TABLE,SEND ̲BUF,KEY ̲BUF,ALL
̲MASK,
NEW ̲REC)
ACTION ̲ON ̲DISK (ACTION) (CC)
SEND ̲SSC ̲REPLY (Q ̲CONTENTS, CMI ̲QEL, CC)
END
Fig. 4.2.9.4.3.5-8
PROCEDURE
DETERMINE ̲ACTION (DISK:KIND ̲OF ̲DISK) (ACTION : DISK
̲ACTION)
VAR MIRRORED ̲DISK ̲ACTION ̲TABLE, FLOPPY ̲DISK ̲ACTION
̲TABLE,
OFFLINE ̲DISK ̲ACTION
̲TABLE:ARRAY
(DISK ̲STATUS) OF ARRAY
(DISK ̲STATUS)
TYPE KIND ̲OF ̲DISK : MIRRORED2..OFFLINE ̲DISK
BEGIN
CASE DISK OF
MIRRORED2 ? ACTION=MIRRORED ̲DISK ̲ACTION ̲TABLE(OLD
̲REC.STA-
TUS, NEW
̲REC.STATUS)
FLOPPY ̲DISK ? ACTION=FLOPPY ̲DISK ̲ACTION ̲TABLE(OLD
̲REC.STA-
TUS, NEW
̲REC.STATUS)
OFFLINE ̲DISK ? ACTION=OFFLINE ̲DISK ̲ACTION ̲TABLE(OLD
̲REC.STA-
TUS, NEW
̲REC.STATUS)
END CASE
END ̲DETERMINE ̲ACTION
Fig. 4.2.9.4.3.5-9
PROCEDURE
ACTION ̲ON ̲DISK (ACTION:DISK ̲ACTION) (CC : INTEGER)
VAR DSK : MIR1 ̲DISK ..OFFL ̲DISK
BEGIN
CC = 0
CASE ACTION OF
MOUNT ̲A? MOUNT ̲DISK(NEW ̲REC.DISK,NEW ̲REC.VOLUME)
(CC)
CASE CC OF
IN ̲VOLUME? NEW ̲REC.STATUS = VOLUME
̲ERROR
CC = HW ̲ERROR
IN ̲DISK? NEW ̲REC.STATUS = DISK
̲ERROR
CC = HW ̲ERROR
WRONG ̲VOLUME ̲NAME?
CC = WRONG ̲VOLUME
̲NAME ̲X
VOLUME ̲NAME ̲IS ̲USED?
CC = VOLUME ̲NAME ̲IS
̲USED ̲X
END ̲CASE
DISMOUNT ̲A?DISMOUNT ̲DISK(NEW ̲REC.DISK,NEW ̲REC.VOLUME
(CC)
CASE CC OF
IN ̲VOLUME? NEW ̲REC.STATUS = VOLUME
̲ERROR
CC = HW ̲ERROR
IN ̲DISK? NEW ̲REC.STATUS = DISK
̲ERROR
CC = HW ̲ERROR
NON ̲EXISTING ̲VOLUME?
CC = NON ̲EXISTING VOLUME
̲X
END ̲CASE
ASSIGN ̲A? ASSIGN ̲DISK(NEW ̲REC.DISK)(CC)
CASE CC OF
VOLUME ̲MOUNTED? CC = VOLUME ̲MOUNTED
̲X
END ̲CASE
DEASSIGN A? DEASSIGN ̲DISK(NEW ̲REC.DISK)(CC)
CASE CC OF
VOLUME ̲MOUNTED? CC = VOLUME ̲MOUNTED
̲X
END ̲CASE
DISCARD A? DISCARD ̲ACTION(NEW ̲REC.DISK) (CC)
INCLUDE A? INCLUDE ̲A ̲MIRRORED ̲DISK(NEW ̲REC.DISK)
(CC)
CASE CC OF
IN ̲VOLUME? CC = HW ̲ERROR
IN ̲DISK? CC = HW ̲ERROR
END ̲CASE
END CASE
CC NE 0 AND CC NE HW ̲ERROR ?
CASE NEW ̲REC.DISK OF
MIRRORED 1 ? DSK = MIR1 ̲DISK
MIRRORED 2 ? DSK = MIR2 ̲DISK
FLOPPY ̲DISK ? DSK = FLOP ̲DISK
OFFLINE ̲DISK ? DSK = OFFL ̲DISK
END ̲CASE
KEY ̲BUF.KEY = NEW ̲REC.DISK
UPDATE ̲ENTRY(DISK ̲TABLE,SEND ̲BUF,KEY ̲BUF,ALL ̲MASK,NEW
̲REC)
CONF ̲DISPLAY (SET ̲STATUS, DSK, NEW ̲REC.STATUS)
END
Fig. 4.2.9.4.3.5-10
PROCEDURE
DISCARD ̲ACTION ( ) (CC:INTEGER)
VAR STATUS : DISK ̲STATUS
BEGIN
READ ̲MASK = 2 "STATUS
CASE NEW ̲REC.DISK OF
MIRRORED1 ? KEY ̲BUF.KEY = MIRRORED2
MIRRORED2 ? KEY ̲BUF.KEY = MIRRORED1
END CASE NEW ̲REC.DISK
SEARCH ̲ENTRY (DISK ̲TABLE,KEY ̲BUF,READ ̲MASK,SEND
̲BUF)(STATUS)
STATUS EQ IN ̲SERVICE ?
EXCLUDE ̲A ̲MIRRORED ̲DISK(NEW ̲REC.DISK)
CC = LAST ̲MIRRORED ̲DISK
END ̲DISCARD ̲ACTION
Fig. 4.2.9.4.3.5-11
PROCEDURE ORDERED ̲CLOSE ̲DOWN ̲OP ̲CMD (PU:ACTIVE..STANDBY,
MINU-
TES : RELATIVE
̲TIME ̲TYPE)
(CC : INTEGER)
VAR STANDBY ̲PU : PU1..PU2
BEGIN
CC = 0
CASE PU OF
ACTIVE ̲PU ? ORDERED ̲CLOSE ̲DOWN (INITIAL, MINUTES,
CLOSE
̲DOWN ̲CMD)
STANDBY ̲PU ? WDP ̲CONTROL (RESET, 3-PU ̲NO, NIL)
(CC)
CASE PU ̲NO OF
1 ? STANDBY ̲PU = PU2
2 ? STANDBY ̲PU = PU1
END CASE
CONF ̲DISPLAY (SET ̲STATUS, STAND
̲BY ̲PU,
IN ̲SERVICE)
SEND ̲SSC ̲REPLY (Q ̲CONTENTS, CMI
̲QEL, CC)
END CASE
END ̲ORDERED ̲CLOSE ̲DOWN ̲OP ̲CMD
Fig. 4.2.9.4.3.5-12
PROCEDURE
SET ̲TRACE ̲MASK ̲OP ̲CMD (TRACE ̲INFO : TRACE ̲INF)
VAR CC : INTEGER
BEGIN
CC = EXEC ̲OK
TRACE ̲INFO. PROCESS ̲NO EQ RESET ̲ALL ̲PRIORITIES
̲NO ?
RESET ̲LOG
̲PRIORITIES
SET ̲LOG ̲PRIORITY (TRACE ̲INFO)(CC)
CC EQ ILLEGAL ̲PROCESS ̲NO?
CC = ILLEGAL ̲PROCESS ̲NO ̲X
SEND ̲SSC ̲REPLY (Q ̲CONTENTS, CMI ̲QEL, CC)
END
Fig. 4.2.9.4.3.5-13