top - download
⟦e77f3049c⟧ Wang Wps File
Length: 49818 (0xc29a)
Types: Wang Wps File
Notes: FIX/1256/PSP/0066
Names: »3359A «
Derivation
└─⟦714fc5a2b⟧ Bits:30006132 8" Wang WCS floppy, CR 0290A
└─ ⟦this⟧ »3359A «
WangText
3359A/ape…86…1
…02…
…02… …02…
…02…FIX/1256/PSP/0066
…02…APE/880915…02……02…
MTCB MONITOR PSP
…02… OK/830210…02…FK 7809
MTCB MONITOR PSP
FIX/1256/PSP/0066
AK
FMK
FMK(5), AK(4)
…0f… FIKS S/W Mgr
FIKS Conf Mgr
1.1
880915
…0e……86…W …02… …02… …02… …02… …02…
REVISION RECORD
REVISION RECORD
REVISION RECORD
REVISION RECORD
REVISION RECORD
Wang/Disk:
3359A/290A
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…06…1 …02… …02… …02…
ISSUE DATE PAGES BRIEF
DESCRIPTION
OF
CHANGE
ISSUE DATE PAGES BRIEF
DESCRIPTION
OF
CHANGE
ISSUE DATE PAGES BRIEF
DESCRIPTION
OF
CHANGE
ISSUE DATE PAGES BRIEF
DESCRIPTION
OF
CHANGE
ISSUE DATE PAGES BRIEF
DESCRIPTION
OF
CHANGE
AFFECTED
AFFECTED
AFFECTED
AFFECTED
AFFECTED
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ^ ^
^
1 ^830210 ^ All ^
Original
issue
of
document.
^ ^ ^
1.1 ^880915 ^ DCN1 ^
Changed
in
accordance
with
Order
No:
08/88
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
^ ^ ^
T̲A̲B̲L̲E̲ ̲O̲F̲ ̲C̲O̲N̲T̲E̲N̲T̲S̲
Page
1 SCOPE .......................................... 1
1.1 Introduction ............................... 1
1.2 Abbreviations .............................. 1
2 APPLICABLE DOCUMENTS ........................... 2
3 MODULE SPECIFICATION ........................... 3
3.1 Functional Capabilities .................... 3
3.1.1 Parameter Block ........................ 3
3.1.2 File space allocation/deallocation ..... 4
3.1.3 Major Events ........................... 5
3.1.4 Call Sequence .......................... 8
3.2 Interface Description ...................... 11
3.3 Processing ................................. 27
3.3.1 Design Overview ........................ 27
3.3.2 Visual Table of Content ................ 29
3.3.3 Overview Flow Chart .................... 31
3.3.4 Summary Description ................... 34
3.3.5 Procedure Descriptions ................. 36
3.3.5.1 INITMTCB ........................... 36
3.3.5.2 CREATEMTCB ......................... 38
3.3.5.3 RESERVEMTCB ........................ 40
3.3.5.4 RELEASEMTCB ........................ 42
3.3.5.5 WRITEMTCB .......................... 46
3.3.5.6 READMTCB ........................... 51
3.3.5.7 CREATEFILE ......................... 53
3.3.5.8 GETFILE ............................ 58
3.3.5.9 RELEASEFILE ........................ 62
3.3.6 COMMON PROCEDURES ...................... 68
3.4 DATA ORGANIZATION .......................... 75
3.5 Storage Allocation ......................... 94
3.6 Performance Characteristics ................ 94
3.7 Limitations ................................ 94
3.8 Error Codes/Error Locations ................ 94
3.9 Listing References ......................... 94
4 QUALITY ASSURANCE ............................. 94
5 PREPARATION FOR DELIVERY ....................... 96
1 S̲C̲O̲P̲E̲
Herein is described the MTCB Monitor of FIKS.
1.1 I̲n̲t̲r̲o̲d̲u̲c̲t̲i̲o̲n̲
The MTCB Monitor provides tools for communicating messages among subsystems at Node/MEDE.
The MTCB Monitor provides tools for communication of data among subsystems at Node/MEDE.
The MTCB Monitor controls allocation/deallocation of file space for messages as well as temporary
file space.
1.2 A̲b̲b̲r̲e̲v̲i̲a̲t̲i̲o̲n̲s̲
HDB Historical Data Base
HIPO Hierarchy plus Input Process Output
IMF Inbound Message File
IOS Input Output System
MEDE Message Entry and Distribution Equipment
MTCB Message Transition Control Block
MTF Message Text File (in HDB)
PDB Preparation Data Base
PCB Process Control Block
2 A̲P̲P̲L̲I̲C̲A̲B̲L̲E̲ ̲D̲O̲C̲U̲M̲E̲N̲T̲S̲
I FIX/0000/SPC/0002 FIKS Requirements Specification Issue 4
II FIX/0000/DSP/0001 FIKS System Design Specification Issue 3
III FIX/0100/MAN/0003 FIKS Software I/F Reference
IV FIX/0100/MAN/0004 FIKS DATA I/F Reference
V CSS/302/PSP/0008 CR80 AMOS KERNEL
VI CSS/006/PSP/0006 CR80 AMOS, I/O SYSTEM
VII FIX/1000/EWP/0080 FIKS S/W CONFIGURATION CONTROL LIB. DESCR.
3 M̲O̲D̲U̲L̲E̲ ̲S̲P̲E̲C̲I̲F̲I̲C̲A̲T̲I̲O̲N̲
3.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲C̲a̲p̲a̲b̲i̲l̲i̲t̲i̲e̲s̲
The MTCB Monitor supports communication of messages among subsystems.
One subsystem, usually the MES or the NSS, may create a reference to an MTCB and file space,
write the message to the file and update the MTCB accordingly.
Communication to another subsystem is performed by queuing the MTCB index to this subsystem's
input queue (by use of the queue monitor QACCESS - see this). Up to 63 subsystems and/or
queues may simultaneously have reference to an MTCB.
Whenever a receiving subsystem (by reading its input queue) gets a message reference in form
of an MTCB index, it may access the MTCB and the message on disk. Disk reference is given
to the message on the Historical Data Base, if the message resides there, in other cases
the reference to the original file is used. MTCB's used to communicate messaes are called
Real MTCB's or just MTCB's.
3.1.1 P̲a̲r̲a̲m̲e̲t̲e̲r̲ ̲B̲l̲o̲c̲k̲
The MTCB Monitor supports communication of data from one subsystem to another. One subsystem
may via the MTCB index reference up to 6 1/2 words of data plus control information giving
the category of the data. …86…W …02… …02… …02… …02… …02…
The MTCB index may subsequently be queued to other subsystems input queues, these subsystems
may read the data. The kind of MTCB's here described are always called pseudo-MTCB's.
A pseudo-MTCB may reference disk space. This disk space may be used in the communication
from subsystem to subsystem.
3.1.2 F̲i̲l̲e̲ ̲s̲p̲a̲c̲e̲ ̲a̲l̲l̲o̲c̲a̲t̲i̲o̲n̲/̲d̲e̲a̲l̲l̲o̲c̲a̲t̲i̲o̲n̲
The MTCB Monitor controls allocation and deallocatin of file space.
For the IMF (and other applications) where the data area has a relatively short life time
a contiguous disk area is controlled. The contiguous disk file is by the MTCB monitor divided
into N parts each of max. size (max. length of a narrative message). The fact that file reference
is given to the HDB for messages residing there allows release of IMF and PDB file space
after storage of a message on the HDB despite still outstanding queue references. The file
space deallocation is performed by the MTCB monitor on behalf of the calling process.
3.1.3 M̲a̲j̲o̲r̲ ̲E̲v̲e̲n̲t̲s̲
Major events for a subsystem (process') access to the MTCB monitor are:
Initialize the process to the monitor through a call to INITMTCB. The PCB index table and
the save areas are updated. The PDB catalogue, the IMF and the MTF are opened (1).
Create an MTCB through call CREATEMTCB. The MTCB area is searched for a freem element and
the index is returned to the requestor (2).
Reserve an already existing MTCB through a call RESERVEMTCB. This happens when QACCESS is
called to enter an MTCB in a queue. The MTCB-use-count is incremented (3).
Create a file reference from an already existing MTCB through a call CREATEFILE (4). A reference
is created to an IMF area (4a) or a PDB area (4b), the latter requiring a lookup on the file.
The MTCB index word is updated to mark that a file is in use.
Get a file reference to an already existing file thrugh a call of GETFILE (5). If the referenced
MTCB points to a message, it is tested if the message is on the HDB, if so the HDB reference
is delivered. If not on HDB, the IMF reference (if such) (5a) or the PDB reference (if such)
(5b) is delivered.
Release a file reference (6) through a call of RELEASEFILE. If the MTCB reference is the
last and the MTCB points to a message on HDB, release. For IMF (6a) and PDB (6b). The MTCB
index word is updated.
MTCB Monitor Block Diagram
Release an MTCB reference through a call of RELEASEMTCB (7). This is usually done by QACCESS
when deleting a queue element.
From the call of RESERVEMTCB to the call of RELEASEMTCB the content of the MTCB may be accessed
by means of READMTCB (8) or WRITEMTCB (9).
3.1.4 C̲a̲l̲l̲ ̲S̲e̲q̲u̲e̲n̲c̲e̲
Correct call sequences are as follows:
A MTCB is created by own process
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
Call of MTCB ̲USE ̲COUNT FILE ̲USE ̲COUNT
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
1. MTCB, CREAT = 1 = 0
2. MTCB, WRITE
3. MTCB, CREATEFILE = 1
4. MTCB, RESERVE 1 + 1 = 2
(typically via
QACCESS, INS)
5. MTCB, RELEASEFILE 1 - 1 = 0
6. MTCB, RELEAS 2 - 1 = 1
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲…86…W …02… …02… …02… …02…
…02… …02…
B MTCB is received from a queue
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
Call of MTCB ̲USE ̲COUNT FILE ̲USE ̲COUNT
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
1. MTCB, READ
2. MTCB, GETFILE + 1
…0e…(if not on HDB)…0f…
3. MTCB, RESERVE + 1
(may be via
QACCESS,INS)
4. MTCB, RELEASEFILE - 1
…0e…(if not on HDB)…0f…
5. MTCB, RELEAS - 1
(typically via
QACCESS,DEL)
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
If call B3 is omitted in case the MTCB is not enqueued again, the file associatead with it
may be returned to the pool. It is i̲m̲p̲o̲r̲t̲a̲n̲t̲ ̲t̲o̲ ̲n̲o̲t̲e̲ that a call of MTCB, RESERVE is essential
before RELEASEFILE is called, if you want to preserve the MTCB reference to the file, that
is if you want to preserve the message on the file for future use by yourself or other processes.
The call of MTCB, RELEAS will, if the MTCB ̲USE ̲COUNT = 1, release any files associatead with
the MTCB. This cannot replace a call of RELEASE-FILE, however, since MTCB, RELEAS in case
of a PDB file will issue a LOOKUP, which means that the FMS system has two users on the file,
and this will prevent a RESET of the file.
If a sequence like B is called, and the MTCB is not enqueued, but kept for own use, you may
have an MTCB ̲USE ̲COUNT = 1, and a FILE ̲USE ̲COUNT = 0. A subsequenet call of MTCB,RELEAS
will now return the file to the pool. That is, if it is a PDB file, a LOOKUP, a RESET, and
a DISMANTLE is issued. In such a case a file descriptor must be available.
N̲o̲t̲e̲, that a process must not call GETFILE more than once with the same MTCB ̲INDEX reference.
GETFILE marks the MTCB ̲INDEX with file type in use. A subsequent call of RELEASEFILE will
clear this mark. Thus, if RELEASE-FILE is called again the errorcode NO ̲FILE ̲IN ̲USE will
be issued.
3.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Each process must call INITMTCB once before any other access to the MTCB MONITOR (including
those performed by QACCESS on behalf of the process)..
The call format in SWELL is as follows:
MON (MTCB, branch , register , R7).
The branch parameter is a constant, which may have the following values:
INITE = 0
CREAT = 1
RESERVE = 2
RELEAS = 3
WRITE = 4
READ = 5
CREATEFILE = 6
GETFILE = 7
RELEASEFILE = 8.
The value of the constant MTCB is 107.
The registers used by the various procedures are defined in section 3.2.1.
INITMTCB must be called once by all processes accessing the MTCB Monitor. This includes
accesses by the queue monitor on behalf of the calling process.
WORK-AREA is used as intermediate work space whenever a procedure of the MTCB monitor is
called. WORK-AREA is only used from the moment a procedure is entered to the moment it is
left.
Interface description for: INITMTCB
Description:
SWELL call: MON (MTCB, INITE, R1, R2, R7)
REGISTER INPUT OUTPUT REMARKS
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
R0
R1 Ref workspace
R2 MOVHEAD FD#
R3
R4
R5
R6
R7 LINK Return Code
Return LINK +1 : Error
LINK +2 : OK
Workspace : 8 words memory area in the data local to the process
MOVHEAD FD# : FD reference for moving head disk directory
…02…THIS PAGE IS INTENTIONALLY LEFT BLANK
Interface description for: CREATEMTCB
Description:
WAITOPTION : 0 Return if no element
: 1 Wait until free element found
: 2 PRIVILEDGED CALLER *(RETURN IF NO ELEMENT)
: 3 PRIVILEDGED CALLER *(WAIT ON FREE ELEMENT)
MTCBTYPE : 0 Pseudo MTCB
1 Real MTCB
SWELL call: MON (MTCB, CREAT,R0, R1, R7)
REGISTER INPUT OUTPUT REMARKS
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
R0 WAITOPTION MTCB index
R1 MTCBTYPE
R2
R3
R4
R5
R6
R7 Link Return Code
Return in Link + 1 : Error
Link + 2 : OK
* If the number of MTCB's has exceeded the lower MTCB ̲THRESHOLD the remaining MTCB resources
are only allocated to priviledged Callers.
Interface description for: RESERVEMTCB
Description:
SWELL call: MON (MTCB,RESERVE, R0, R7)
REGISTER INPUT OUTPUT REMARKS
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
R0 MTCB index MTCB index
R1
R2
R3
R4
R5
R6
R7 Link Return code
Return in Link + 1 : Error
Link + 2 : OK
Interface description for: RELEASEMTCB
Description :
SWELL call: MON(MTCB, RELEASE, R0, R1, R7)
REGISTER INPUT OUTPUT REMARKS
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
R0 MTCB index MTCB index
R1 returns purge 0: no purge,
flag 1: purge indicated
R2
R3
R4
R5
R6
R7 Link Return code
Return in Link + 1 : Error
Link + 2 : OK
Interface description for : WRITEMTCB
Description : For UPDCODE and BLOCK see next pages
SWELL call: MON(MTCB, WRITE, R0, R1, R2, R7)
REGISTER INPUT OUTPUT REMARKS
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
R0 Ref.MTCB index Ref.MTCB index
R1 Ref. BLOCK Ref. BLOCK
R2 UPDCODE
R3
R4
R5
R6
R7 LINK Return code
Return LINK + 1 : Error
LINK + 2 : OK
WRITEMTCB UPDCODE for Pseudo MTCB
For Parameter add up constant (Hexa)
CATEGORY # 1
SUBCAT # 2
BYTE1 # 4
WORD 2 # 8
WORD 3 # 10
WORD 4 # 20
WORD 5 # 40
WORD 6 # 80
WORD 7 #100
As an example : If BYTE1, WORD 5 and WORD 6 shall be updated.
UPDCODE:= #4 + #40 + #80 = #C4
WRITEMTCB UPDCODE for Real MTCB
For Parameter addup constant (Hexa)
APREC # 1
IPREC # 2
CLASS # 4
SPEC # 8
TYPE # 10
LENGTH # 20
HDBADDRESS # 40
WORD 4 # 80
WORD 5 # 100
WORD 6 # 200
WORD 7 # 400
Indicator 'ON HOB' * #8000
As an example: If SPEC, TYPE, WORD 4 are to be updated
UPDCODE:= #8 + #10 + #80 = #98
*) Does not correspond to a data item in application area.
Parameter description READMTCB, WRITEMTCB : BLOCK
Pseudo-MTCB Word Real MTCB
0 0 tag-field 1
CATEGORY 1 APREC
SUBCAT 2 IPREC
BYTE 1 3 CLASS
WORD 2 4 SPEC
WORD 3 5 TYPE
WORD 4 6 LENGTH
WORD 5 7
WORD 6 8 …0e……0e…HDB ADDRESS…0f……0f…
WORD 7 9 WORD 4
10 WORD 5
11 WORD 6
12 WORD 7
Interface description for: READMTCB
Description : For Block see description under WRITEMTCB
SWELL call : MON (MTCB, READ, R0, R1, R7)
REGISTER INPUT OUTPUT REMARKS
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
R0 Ref.MTCB index Ref.MTCB index
R1 Ref. BLOCK Ref. BLOCK BLOCK updated
R2
R3
R4
R5
R6
R7 LINK Return code
Return LINK + 1 : Error
LINK + 2 : OK
Interface description for: CREATEFILE
Description : For parameters see next page
SWELL call: MON (MTCB, CREATEFILE, R0, R1, R2, R4, R7)
REGISTER INPUT OUTPUT REMARKS
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
R0 Ref.MTCB index Ref.MTCB index MTCB index updated
R1 Ref.FILEADDRESS Ref.FILEADDRESS FILEADDRESs updated
R2 FILETYPE FILETYPE
R3
R4 PRIVILEDGED CALL FD
R5
R6
R7 LINK Return Code
Return LINK + 1 : Error
LINK + 2 : OK
Interface description for : GETFILE
Description : For parameters see CREATEFILE
SWELL call: MON (MTCB, GETFILE, R0, R1, R2, R4, R7)
REGISTER INPUT OUTPUT REMARKS
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
R0 Ref.MTCB index Ref.MTCB index MTCB index updated
R1 Ref. FILE ADDRESS Ref.FILEADDRESSFILEADDRESS updated
R2 FILETYPE
R3
R4 FD
R5
R6
R7 LINK Return code
Return LINK + 1 : Error
LINK + 2 : OK
FILE ̲ADDRESS A block of 2 words containing the byte offset in the retuned FD,
where the message/file information starts.
Least
Significant
Most
FD : File descriptor to be used when calling IO system procedure
For PDB: the FD of the file in the PDB
For HDB: the FD of the MTF
For IMF: the FD of the IMF.
FILETYPE : 1 : IMF type
2 : PDB type
3* : msg. on HDB
PRIVILEGED CALL: 2: PRIVILEGED CALLER
2: NOT PRIVILEGED CALLER
If the number of PDB files in use has exceeded the low PDB ̲THRESHOLD, the remaining
PDB-resources are allocated to privileged callers only.
* GETFILE only
Interface description for: RELEASEFILE
Description:
SWELL call: MON(MTCB, RELEASEFILE, R0,R4, R7)
REGISTER INPUT OUTPUT REMARKS
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
R0 Ref.MTCB index Ref.MTCB index MTCB index updated
R1
R2
R3
R4 FD
R5
R6
R7 LINK Return Code
Return LINK + 1 : Error
LINK + 2 : OK
3.3 P̲r̲o̲c̲e̲s̲s̲i̲n̲g̲
3.3.1 D̲e̲s̲i̲g̲n̲ ̲O̲v̲e̲r̲v̲i̲e̲w̲
The Node/MEDE requirements together with the division in subsystems for various tasks ask
for:
1. A method of queuing narrative messages for subsystems in a way that they may be processed
by priority.
2. A method of simultaneous reference from several subsystems to the same message.
3. Having essential information from the message in memory and sharing this information
between subsystems.
4. Deletion of temporary file space as soon as possible after a message has been stored
on HDB.
Re 1: Implemented in the queue monitor (see this).
Re 2: Ref. IV section 7.1 gives the design of the data sharing.
Re 3: The MTCB data is stored outside application processes and may only be accessed via
the monitor.
Re 4: The routine RELEASEFILE controls the release of file space in a way to ensure the
space is freed as soon as possible.
The MTCB Monitor is designed as one monitor procedure with internal branch on action codes.
It has a save area per process initialized to it and it has a work area inside each process.
The MTCB data area is initialized with basic pointers, linked lists, etc. through a procedure
MTCB ̲DATAINIT.
The procedure is built as an independent process and is invoked at system initialization
time. The process is run as a background process and it is removed from memory when it has
finished the data initialization.
Detailed description:
Ref. MTCB ̲INIT PROCEDURE PSP FIX/1200/PSP/0067
3.3.2 V̲i̲s̲u̲a̲l̲ ̲T̲a̲b̲l̲e̲ ̲o̲f̲ ̲C̲o̲n̲t̲e̲n̲t̲
Fig. 3.3.2 shows the MTCB Monitor main routines.
FIG. 3.3.2
MTCB Monitor
Visual Table of Contents
3.3.3 O̲v̲e̲r̲v̲i̲e̲w̲ ̲F̲l̲o̲w̲ ̲C̲h̲a̲r̲t̲
Fig. 3.3.3 gives the symbols used in the flow charts of the MTCB Monitor and the main branch
flow chart.
FIG. 3.3.3-1
Legent MTCB Monitor Flow Chart
FIG. 3.3.3-2
MTCB Monitor Main branch flow chart
3.3.4 S̲u̲m̲m̲a̲r̲y̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲ (refer to fig. 3.3.3)
When the procedure is entered a save process is executed to save all registers in the process
header and to disable interrupts. The page no. and offset of the MTCB data area is fetched
from the configuration table (1).
It is checked whether the PCB index is within range (2).
If the branch parameter indicates a call of INIT ̲MTCB this procedure is entered (3,13).
If the branch is different from INITE it is checked whether INIT ̲MTCB has been called earlier
(4).
If it has, the register contents are transferred from the process header to the process save
area in the MTCB data are and interrupts are enabled (5).
If the branch equals CREAT the procedure CREATE ̲MTCB is entered (6,10).
If the branch is different it must be a call with reference to an MTCB index. It is checked
whether this index is within range (7) and, if yes, whether the MTCB in question is marked
as being in use (8).
If OK the monitor will now branch acc. to the call parameter (9). The return from any of
the procedures may indicate an error or OK as specified by the contents of register R7.
The original register contents incl. any return values created by the procedure called are
transferred from the process save area to the process header (11).
It is checked whether the contents of R7 indicates an error (14). If yes return is performed
to LINK + 1, if OK return is to LINK + 2.
3.3.5 P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲s̲
3.3.5.1 I̲N̲I̲T̲M̲T̲C̲B̲
The functions of INITMTCB is to initialize the calling process to the MTCB Monitor. The
pointer to the process-local work area is saved and a data area reserved for this process
in the MTCB data area is initialized.
S̲u̲m̲m̲a̲r̲y̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Major events are:
Define save area for the user, save registers (2)
Open PDB directory (4) and save FD index (5). The work area is used to build file name.
Open IMF (7) and save FD index. The work area is used to build file name
Open MTF (9) and save FD index. The work area is used to build file name.
Reestablish registers (12)
FIG. 3.3.5.1
INIT MTCB Flow chart
3.3.5.2 C̲R̲E̲A̲T̲E̲M̲T̲C̲B̲
CREATEMTCB reserves a free MTCB from the pool of MTCB's and returns the index to the caller.
The MTCB pool have a lower and an upper limit. If the number of MTCB's already reserved
have exceeded the lower limit, creation of new MTCB's are only allowed as priviledged calls
(The type of call is determined by the input parameters to the procedure).
If no MTCB could be allocated one of two actions is taken:
If the caller has required return in case of no MTCB available, return is made with an
error code.
If the caller has required wait for a free MTCB, the calling process waits until an MTCB
is freed.
Major events are:
Increment MTCB counter (1)
If the threshold is exceeded, return in error exit (2)
Reserve item (4)
If reservation fails and call type = WAIT then wait 0,1 sec and try again (6,7,9)
If reservation succeeds: update MTCB with type (12,13) and clear MTCB block (14)
FIG. 3.3.5.2
CREATEMTCB flow chart
3.3.5.3 R̲E̲S̲E̲R̲V̲E̲M̲T̲C̲B̲
RESERVEMTCB increments the MTCB-use-count by one to indicate that one further reference exists
to that MTCB.
RESERVEMTCB is called by the queue monitor QACCESS when an MTCB is entered in a queue. RESERVEMTCB
may be called by processes handing MTCB indices to other processes without using the queue
monitor.
The opposite to RESERVEMTCB is RELEASEMTCB (see this).
FIG. 3.3.5.3
RESERVEMTCB flow chart
3.3.5.4 R̲E̲L̲E̲A̲S̲E̲M̲T̲C̲B̲
RELEASE decrements the MTCB-use-count by 1.
If it reaches zero, the MTCB is released.
Releae of an MTCB consists of two major functions.
First any file-space allocated is released. This means that if there is reserved an IMF
area, it is returned to the pool of IMF areas, and if a PDB file is still referenced, a reset
is issued to the PDB file, and the PDB file is returned to the pool of PDB files. This must
not be used to replace a call of RELEASEFILE.
If the IMF or PDB reference a special handling message a purge flag is returned and the file
is not released.
For each RESERVEMTCB or CREATEMTCB call a call to RELEASEMTCB must eventually be made:
1) If queue elements are obtained by QACCESS specifying nondestructive read the subsequent
deletion of the queue element will imply a call RELEASEMTCB
2) If queue elements are obtained by destructive read of a queue element the calling process
must explicitely call RELEASEMTCB.
3) If the MTCB index is handed to another subsystem without the queue monitor as described
above an explicit call RELEASEMTCB must be made.
Major events are:
Test MTCB ̲USE ̲COUNT under semaphore protection. If counter is 1 decrement USE ̲COUNT (2,9).
If counter is = 1 test if any PDB or IMF file space is still allocated (3). If not free
MTCB (10,11,12).
Test if MTCB references a special handling message (4).
If yes return purge flag (5).
Case IMF space free IMF space (5).
Case PDB space free PDB file (6). Build PDB file name in work area (6.2). Lookup PDB file
(6.3). Issue RESET and DISMANTLE (6.4 6.5). Return PDB file to pool (6,7).
Release index (7) and update MTCB counter (8).
FIG. 3.3.5.4
RELEASE ̲MTCB
flow chart
3.3.5.5 W̲R̲I̲T̲E̲M̲T̲C̲B̲
F̲u̲n̲c̲t̲i̲o̲n̲s̲
WRITEMTCB moves data from the application data area to the MTCB.
A subset of the data in the MTCB may be written. The subset is described in the form of
an update code.
FIG. 3.3.5.5
WRITE ̲MTCB
flow chart
3.3.5.6 R̲E̲A̲D̲M̲T̲C̲B̲
READMTCB unpacks the MTCB from the MTCB pool to the applications data area.
The unpack is controlled by the MTCB type. The full MTCB (Pseudo or Real) is unpacked.
Major events are:
Get MTCB type from the MTCB (2).
If pseudo-MTCB unpack with the pseudo MTCB format into the application data area. Store
indicator pseudo in first word (4).
If real-MTCB unpack with the real MTCB fromat into the application data area. Store indicator
real in first word (3).
FIG. 3.3.5.6
READ ̲MTCB
flow chart
3.3.5.7 C̲R̲E̲A̲T̲E̲F̲I̲L̲E̲
CREATEFILE allocates file space to an MTCB under the condition that the caller is the only
one having reference to the MTCB.
The request contains information indicating whether a PDB file or an IMF area is allocated.
CREATE file makes the reservation; if no file space could be reserved an error is returned.
For PDB files a lookup is performed and the FD (File Descriptor) obtained from the IOS is
returned together with offset = 0.
For IMF area the offset to the area is calculated and the FD for the IMF (obtained at call
INITMTCB) is returned together with the calculated offset.
For both cases the MTCB is marked that the file space is reserved together with the file
type and the pointer to the reserved element in the PDB or the IMF list.
The MTCB index word residing in the caller's data area is marked with an indicator that file
space is used.
Major events are:
Test that the MTCB-use-count is 1 and that no file exists (1,2).
If use-count not 1 or file exists return error.
For IMF type file reserve file from list (5.2, 5.3), if error return error (5.5), calculate
file offset (5.7).
For PDB type file reserve PDB file from list (4.1 - 4.4).
If error return error (4.5,4.6). Build file-name in Work area (4.9) and issue lookup (4.10).
If error, free the file from the list (4.11 - 4.14) and return an error. Offset = 0.
Upon a successful reservation mark the MTCB with file type and index in list and initialize
the File-use-count to 1. (7) Mark the MTCB index word with file-type used (10). Return
FD for either the IMF of the opened PDB file together with the offset.
FIG. 3.3.5.7
CREATEFILE
flow chart
3.3.5.8 G̲E̲T̲F̲I̲L̲E̲
F̲u̲n̲c̲t̲i̲o̲n̲s̲
GETFILE gives the application the necessary information to access a file referenced from
a specified MTCB.
The word file here should be read with care:
For files associated with pseudo MTCB's the reference to the file (or area) originallyu
reserved is handed back.
For real MTCB's (especially narrative messages) file reference is given to the HDB if
the message resides there. If a message is not on the HDB, reference is given to the
file (or the IMF area) originally referenced at call CREATEFILE.
The File-use-count is incremented by 1 for the cases IMF or PDB is referenced to indicate
that one extra reference exists.
Major events are:
If reference to HDB return the FD #(11) (obtained at call INITMTCB) of the MTF and the offset
in the MTF (13) to the application. Next event 10.
If no HDB ref. exists set semaphore protection (2) and test if IMF or PDB file reference
exists (3) if not release semaphore protection, return no ̲file and error (15,16).
If IMF or PDB ref exists:
If file use count = 31 then release semaphore (17) and return error, else increment file
use count and release semaphore (5,6).
If reference to the IMF calculate the offset in the IMF (8.1). Return the offset and the
FD # of IMF (8.2-8.4). Next event 10.
If reference to PDB build file name in work area (9.3), issue LOOKUP (9.4) and return FD#
obtained together with offset = 0 (9.5,9.6). Next event for no error 10. Case of error
in lookup decrement file use count and return error to application.
Indicate file type used (9.7).
FIG. 3.3.5.8
GETFILE
Flow chart
3.3.5.9 R̲E̲L̲E̲A̲S̲E̲F̲I̲L̲E̲
RELEASEFILE performs release of file space for the requestor.
If the caller had reference to a PDB-file or to the IMF and it is the only reference existing,
it tested whether the caller is the only one having MTCB reference or the message referenced
is on the HDB. If one of the two last conditions is fulfilled, the file space is freed.
This means for an IMF reference to return the area to the pool of free areas, for a PDB file
to perform RESET (release of file space) and subsequently to return the file to the pool
of free files.
Major events are:
Test if caller was using a file (2). If not return error.
If file reference = PDB or IMF:
If file use count = 1 and HDB reference exists (6) (or if MTCB ue count =1) then set
deletion flag (7).
If deletion is indicated (8) then test if message is a special handling message (9.2).
If yes, then dismantle the file if it is of type PDB (9.3,9.4).
If the message is not special handling, the referenced file is released. For IMF the
area is returned to the pool of free IMF's (9.5-9.8). For PDB the file is reset and
dismantled and the MTCB counter is decremented (9.9-9.12). The file number is returned
to the pool of free PDB's (9.13-9.14).
The MTCB is updated with NO ̲FILES and FILE ̲USE ̲COUNT = 0 (9.16-9.18).
If deletion is not indicated then dismantle the PDB file (10.1). If file use count =
0 then release semaphore and return error to application (10.5). else decrement the file
use count (10.6) and releae semaphore (10.7).
Clear the file type in the users MTCB index (11) and exit the procedure.
FIG. 3.3.5.9
RELEASEFILE
3.3.6 C̲O̲M̲M̲O̲N̲ ̲P̲R̲O̲C̲E̲D̲U̲R̲E̲S̲
In this section routines that are accessed from more than one of the MTCB procedures are
described.
C̲o̲m̲m̲o̲n̲ ̲r̲o̲u̲t̲i̲n̲e̲s̲
The common routines are described in flow charts on the following pages. They are:
RESSEM Reserve semaphore
RELSEM Release semaphore
BPDBNM Build PDB name in work area
RESIT Reserve ITEM For MTCB,
RELIT Release ITEM PDB or IMF
UPD ̲PDB ̲CTR update counter of PDB files in use
UPD ̲MTCB ̲CTR update counter of MTCB's in use
FIG. 3.3.6-1
BPDBDM
flow chart
3.4 D̲A̲T̲A̲ ̲O̲R̲G̲A̲N̲I̲Z̲A̲T̲I̲O̲N̲
The MTCB Monitor has local data area containing:
Tables to control interface to processes:
Pool of MTCB's
Reserve table for IMF areas
Reserve table for PDB files
Resource data
The MTCB monitor data area lies completely within one page. Its location is known by code
via a pointer in the critical region CONFIG.
The MTCB data is based at MTCB base. This means that all pointers are relative to this base.
The first 17 words from MTCB base to MTCB base +16 have a fixed layout as shown below.
They are descriptors for the rest of the MTCB data area, the layout of which is site dependent.
MTCB2=
RECORD
MPCB, "max. PCB index allowed
PPCBI[, "pointer PCB index [
MPROC, #max. # processes calling MTCB
PSAAR1, "pointer save area #1
SAARWUS, "# save ara words used
NSUBSYS, "max # subsystems
PUPMASK, "pointer update masks
PMTCB, "pointer MTCB pool
NMTCB, "# MTCB's in pool
IFFMTCB, "indeax first free MTCB
PIMF, "pointer IMF list
NIMF, "# IMF areas
IFFIMF, "index first free IMF area
PPDB, "pointer PDB list
NPDB, "# PDB files
IFFPDB, "index first free PDB file
SEM:INTEGER; "global semaphore
END;
P̲C̲B̲ ̲t̲a̲b̲l̲e̲,̲ ̲S̲a̲v̲e̲ ̲a̲r̲e̲a̲
To simplify the visible interface for the application to save area is built up per process
accessing the MTCB monitor. This means the MTCB data area initialization must have the maximum
number of processes supplied at init time.
The process save area is accessed via the PCB index table with one word per process in the
computer. The maximum PCB index number should be supplied at initialization of MTCB data
area.
For the process save area it must be laid out with one entry per process initializing itself
to the monitor through call INITMTCB.
The PDB index table and the save area are shown in Fig. 3.4-1 and 3.4-2.
MPCB
PPCBI[ PCB index 0 ... Max
MPROC Entry 1 ... Max
PSAARI
SAARWUS offsets relative to MTCB base
PCB…0e… o…0f…
index
i 0 This process (PCBi)
has not called INITMTCB
j offset relative to MTCB base
layout of entry see next page
FIG. 3.4.-1
Reference to process save areas
Layout of save area (16 words):
SAAR =
WORKREF, "ref process work area
SUBSYSNO, "obsolete (not used)
IMFFD, "IMF file descriptor index
HDBFD, "MTF file descriptor index
PDBFD, "file descriptor index of PDB catelogue
OWNPSW, "PSW with caller's page
PMTCBE, "pointer MTCB entry
BLINK, "branch link
S0,S1,S2,S3,S4,S5,S6 "save locations for R0-R6 registers
LINK:INTEGER; "link at MTCB monitor call
END;
FIG. 3.4-2
Save area per process
M̲T̲C̲B̲ ̲P̲o̲o̲l̲
The MTCB Pool consists of 1-L MTCB's of 8 words, each as outlined in Fig. 3.4-3 and 3.4.4.
The not used MTCB's are linked together via the first word in each. The used MTCB has the
first bit in the first word set.
Fig. 3.4-5 shows Real MTCB layout.
Fig. 3.4-6 shows Pseudo MTCB layout.
For details see ref. IV section 7.1.
PMTCB
NMTCB
IFFMTCB
MTCB #
1
The MTCB's that are free form a linked list.
2 The links are index
numbers.
3 Last link is zero
4
MTCB's used have first
o bit in first word 1
L
FIG. 3.4-3
MTCB area layout
Word
Control word
0 Q…0f…1…0e… Q…0f…2…0e… Q…0f…3…0e… Q…0f…4…0e… File-use-count MTCB-use-count
Bit 15 14 13-12 11 10-6 5-0
Real or Pseudo MTCB (depending on Q…0f…2…0e…)
1
2
3
4
5
6
7
8 IMF area # or PDB file #
Q1 = 0: MTCB free
= 1: MTCB in use
Q2 = 0: pseudo MTCB
= 1: real MTCB
Q3 = 0: no file ref.
= 1: IMF ref.
= 2: PDB ref.
= 3: TSF ref.
Q4 = 0: no HDB ref.
= 1: HDB ref.
FIG. 3.4-4
MTCB layout
Word
Bit: 15-13 12-10 9-6 5-4 3-2 1-0
1 APREC IPREC CLASS SPEC TYPE Spare
2 HDB ̲ADDRESS
3 LENGTH
4 WORD 4 Additional
information
5 WORD 5
6 WORD 6
7 WORD 7
FIG. 3.4-5
Real MTCB layout
Pseudo-MTCB layout
1 Category Subcategory
2
3
4 Data, format depends on specific interface
5
6
7
FIG. 3.4-6
I̲M̲F̲ ̲P̲o̲o̲l̲
The IMF is created as a contiguous file on the moving head disk. The file is sized so that
it consists of N contiguous areas, each withthe size of a maximum size narrative message
rounded up to an integer number of sectors. The IMF is controlled via a list in memory.
The list contains one word perarea in the IMF.
Unused elements are linked together, used elements have the first bit set to one.
The concept is shown in Fig. 3.4-7 and 3.4-8. The area size is set to 26 sectors or 13812
bytes.
PIMF
NIMF = N
IFFIMF
Area #
1
2 The areas, that are free are
linked together with
3 indices.
4
5
6 Last link is zero.
Areas used have first bit
in the corrsponding word
7 in this list to 1
FIG. 3.4-7
IMF Reservation List
Area # Offset in bytes
0
1
13312
2
26624
3
(N-1) …0f…*…0e…13312
N
FIG. 3.4-8
IMF File Layout
P̲D̲B̲ ̲P̲o̲o̲l̲ ̲o̲f̲ ̲F̲i̲l̲e̲s̲
The PDB Pool consists of M files with the names of 6 characters each.
The names are constructed as follows:
PDBXXX (where XXX = the PDB file number in ASCII)
This gives a direct correspondance between numbers and names.
The PDB pool is controlled via a list in memory.
This list is organized in the same way as the IMF list.
Fig. 3.4-9 gives the layout of the list.
PPDB
NPPB = M
IFFPPB
File #
1 The files, that are
free are linked
2 together with
indices.
3
4
5
Last link is zero
Files used have first bit in the corresponding word
in this list to 1.
M
FIG. 3.4-9
PDB File Reservation List
R̲e̲s̲o̲u̲r̲c̲e̲ ̲D̲a̲t̲a̲
The last 4 words in the data area is allocated resource data:
WORD 1: MTCB lower threshold (limit for non-priviledged users)
WORD 2: No. of MTCB's in use
WORD 3: PDB lower threshold (limit for non-priviledged users)
WORD 4: No of PDB files in use.
WORD 1 and 3 are updated at initialization time by MTCB ̲INIT.
WORD 2 and 4 are updated by the monitor at resource allocation/deallocation.
D̲a̲t̲a̲ ̲i̲n̲ ̲u̲s̲e̲r̲ ̲a̲r̲e̲a̲
The data areas in the calling process are:
1) Work area 8 word identified to the monitor at call INITMTCB. This area may be used by
the process as work space, but will be destroyed upon a call to the MTCB monitor.
2) MTCB index word See Fig. 3.4-10.
As the index word is used by the monitor to indicate file-usage, it is important that
it is not copied.
e.g. the following sequence is legal
a. Get queue element QACCESS (INDEX,...)
b. Get file GETFILE (INDEX,...)
c. Release file RELEASEFILE (INDEX,...)
and the following illegal
a. Get element QACCESS (INDEX,...)
b. INDEX1=INDEX
c. Get file GETFILE (INDEX,...)
d. Release RELEASEFILE (INDEX1,...)
3) Data record used in read and write of MTCB's.
See chap. 3.2, parameter description for READMTCB and WRITEMTCB.
4) File address used by CREATE ̲FILE and GET ̲FILE to give byte offset in IMF or MTF.
5) File descriptor, 18 words each. 3 file descriptors are perminanently in use for the
IMF and MTF files and the PDB catalogue.
Furthermore 1 file descriptor is needed per call of CREATE ̲FILE, and there must be a file
descriptor available each time GET ̲FILE or RELEASE ̲MTCB is called.
Bit#
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MTCB index
Spare
File type used (0 = None)
1 IMF
2 PDB
3 HDB
Note: As the MTCB index word is updated by CREATEFILE, GETFILE, RELEASEFILE it is important, that
the reference handed over to the MTCB monitor when calling one of these procedures is always
the same = inside application processes MTCB index words should not be copied.
FIG. 3.4.10
Layout of MTCB index word
3.5 S̲t̲o̲r̲a̲g̲e̲ ̲A̲l̲l̲o̲c̲a̲t̲i̲o̲n̲
Program space : 1218 words (Page [)
Data space : The space required depends on the resource allocation (number of
IMF's and MTCB's) which is different from site to site.
3.6 P̲e̲r̲f̲o̲r̲m̲a̲n̲c̲e̲ ̲C̲h̲a̲r̲a̲c̲t̲e̲r̲i̲s̲t̲i̲c̲s̲
N/A
3.7 L̲i̲m̲i̲t̲a̲t̲i̲o̲n̲s̲
N/A
3.8 E̲r̲r̲o̲r̲ ̲C̲o̲d̲e̲s̲/̲E̲r̲r̲o̲r̲ ̲L̲o̲c̲a̲t̲i̲o̲n̲s̲
In case of errorfree return the completion code (register 7) is zero.
The error codes are listed in table 3.8.
3.9 L̲i̲s̲t̲i̲n̲g̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
Ref. Chap. 5
4 Q̲U̲A̲L̲I̲T̲Y̲ ̲A̲S̲S̲U̲R̲A̲N̲C̲E̲
N/A
TABLE 3.8
MTCB Monitor Error Codes
5 P̲R̲E̲P̲A̲R̲A̲T̲I̲O̲N̲ ̲F̲O̲R̲ ̲D̲E̲L̲I̲V̲E̲R̲Y̲
Command files used at generation of the object code (MTCBMON.CR[, MTCBMON.CR1,MTCBMON.CP,MTCBMON.L[)
can be found on FIXLIB disc volume in the source directory for MTCBMON (ref.VII)
Generation of object code file:
Copy the source directory into a work directory.
. Activate the command file MTCBMON.CR[
. Activate the command file MTCBMON.CP
. Activate the command file MTCBMON.L[
The code file is now available in MTCBMON.C
L̲i̲s̲t̲i̲n̲g̲s̲
The source list and linker list may be obtained by activating the command file MTCBMON.PP.