DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Wang WCS documentation floppies

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CR80 Wang WCS documentation floppies

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦ba35468e5⟧ Wang Wps File

    Length: 68661 (0x10c35)
    Types: Wang Wps File
    Notes: CPS/SDS/025               
    Names: »1616A «

Derivation

└─⟦c333b847f⟧ Bits:30005811 8" Wang WCS floppy, CR 0118A
    └─ ⟦this⟧ »1616A « 

WangText

                                 …00……00……00……00…<…0a……00……00…<…0b…<…0f…<
<…06…;…0d…;…0e…;…0f…;…00…;…06…:…0a…:…0f…:…00…:…06…9…09…9…0a…9…01…9…02…9
8…09…8…01…8…07…7…0f…7…02…7
7…07…6…0d…6 5…0b…5…0c…5…0d…5…0e…5…0f…5…05…4…0c…4…01…4…06…4…07……86…1                                             …02…           …02…   …02…       
    

…02…CPS/SDS/025

…02…850401…02……02…
MESSAGE MANAGEMENT
DETAILED DESIGN SPECIFICATION …02…ISSUE 1…02…CAMPS








                        1̲ ̲ ̲G̲E̲N̲E̲R̲A̲L̲



1.1      P̲U̲R̲P̲O̲S̲E̲ ̲A̲N̲D̲ ̲S̲C̲O̲P̲E̲

         The package specification for Message Management System
         is written to fulfill the following objectives:

         a)  To provide detailed definition of the package function
             and architecture.

         b)  To provide users with detailed parameter information
             for all commands to MMS.



1.2      A̲P̲P̲L̲I̲C̲A̲B̲L̲E̲ ̲D̲O̲C̲U̲M̲E̲N̲T̲S̲ ̲A̲N̲D̲ ̲P̲R̲O̲J̲E̲C̲T̲ ̲R̲E̲F̲E̲R̲E̲N̲C̲E̲S̲



1.2.1    A̲p̲p̲l̲i̲c̲a̲b̲l̲e̲ ̲D̲o̲c̲u̲m̲e̲n̲t̲s̲

         a)  CPS/210/SYS/001
             CAMPS System Requirement Specificaction

         b)  CPS/ICD/009
             Software Interface Control Document

         c)  CPS/DBD/001
             Database Design Document

         d)  CSS/920/SPS/0001
             File Management System
             System Product Specification

         e)  CSS/920/PSP/0046
             FMS Command Controller
             Product Specification

         f)  CSS/920/PSP/0047
             FMS Disk Cache Manager
             Product Specification

         g)  CSS/3200/PSP/0026
             DAMOS Transfer Module
             Product Specification



         h)  CPS/SDS/024
             CAMPS SYSTEM FUNCTIONS
             Detailed Design Specification

         i)  CSS/006/PSP/0044
             DAMOS System Specification 

         j)  CSS/3900/PSP/0033
             DAMOS Coroutine Monitor
             Product Specification



1.2.2    P̲r̲o̲j̲e̲c̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

         N/A



1.3      T̲E̲R̲M̲S̲ ̲A̲N̲D̲ ̲A̲B̲B̲R̲E̲V̲I̲A̲T̲I̲O̲N̲S̲



1.3.1    T̲e̲r̲m̲s̲

         Retire:     A process suspends its own activity by
                     calling the KERNEL function RETIRE.

         Trusted:    A KERNEL term.
                     A trusted process is allowed to decrease
                     the security level of stored information.



1.3.2    A̲b̲b̲r̲e̲v̲i̲a̲t̲i̲o̲n̲s̲

         AHC         Active Handle Count
         BLE         BLOCK LIST ELEMENT
         CIF         CAMPS Information File
         CIF ID      CIF Identification
         CIFCB       CIF Control Block
         CKP         Checkpoint
         CMON        Coroutine Monitor
         CSF         CAMPS System Functions
         CTRL        Command Controller
         DAMOS       CR80D Advanced Multiprocessor Operating
                     System


         DC          Disc Cache
         DCM         Disk Cache Manager
         DMA         Direct Memory Access
         FBM         Free Block Map
         FD          Field Descriptor
         FDCB        File Description Control Block
         FM          File Manager
         FMS         File Management System
         ID          Identification
         IOS         I/O System
         ITS         Intermediate Storage
         LCD         Long Term Storage CIF Directory
         LTS         Long Term Storage
         MMON        Message Monitor
         MMS         Message Management System
         OCD         On-line CIF Directory
         PBM         Purge Block Map
         PHC         Passive Handle Count
         PU          Processing Unit
         SEL         Synchronization Element
         SSC         System Status and Control
         STS         Short Term Storage
         VCB         View Control Block
         XFER        KERNEL Data Transfer Module



                2̲ ̲ ̲S̲U̲M̲M̲A̲R̲Y̲ ̲O̲F̲ ̲R̲E̲Q̲U̲I̲R̲E̲M̲E̲N̲T̲S̲



2.1      P̲A̲C̲K̲A̲G̲E̲ ̲D̲E̲S̲C̲R̲I̲P̲T̲I̲O̲N̲

         M̲essage M̲anagement S̲ystem contains facilities for storage
         of messages and similar items on disk and manipulation
         of these messages and items.

         Each item is stored in an entity called CAMPS Information
         File. The main difference between a CIF and an ordinary
         file is that CIFs are relatively small, and that they
         are subject to very intense activity during a relatively
         short period after their creation. After that period
         they will be stored permanently, and will  be subject
         to very low activity. MMS will optimize storage of
         and access to items according to the activity level.



2.1.1    P̲a̲c̲k̲a̲g̲e̲ ̲I̲n̲t̲e̲r̲r̲e̲l̲a̲t̲i̲o̲n̲s̲



2.1.1.1  A̲p̲p̲l̲i̲c̲a̲t̲i̲o̲n̲ ̲P̲a̲c̲k̲a̲g̲e̲s̲

         MMS executes in a process separate from the application
         processes requesting its service. The application processes
         shall access MMS via Message Monitor in CSF, cf. reference
         h. The process communication is done via s̲ynchronization
         e̲l̲ements. On the appplication side the SEL communication
         is performed by Message Monitor. On the MMS side the
         commands from IOS and MMON are received in the same
         SEL by the File Management System Command Controller.
         FMS commands from IOS are then sent to FMS while MMS
         commands from MMON are sent to MMS. See figure 2.1.1-1.

         CIFs reside on disk volumes which normally contain
         a number of files too. The necessary volume handling
         is done by commands to FMS. They are issued by SSC
         and Supervisor Package. Volume handling and other System
         functions are performed by operating system using the
         same interface as application packages.





2̲.̲1̲.̲1̲.̲2̲  D̲M̲A̲ ̲D̲a̲t̲a̲ ̲T̲r̲a̲n̲s̲f̲e̲r̲

         Data transfers between MMS, application processes and
         Disk Controller Memory are done by DMA using the KERNEL
         XFER module.

         See figure 2.1.1-2.







                      Figure 2.1.1-1







                      Figure 2.1.1-2



2.2      P̲A̲C̲K̲A̲G̲E̲ ̲F̲U̲N̲C̲T̲I̲O̲N̲S̲



2.2.1    M̲a̲i̲n̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲



2.2.1.1  S̲t̲o̲r̲a̲g̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲

         MMS will recognize three different types of storage:

         a)  S̲h̲o̲r̲t̲ ̲T̲e̲r̲m̲ ̲S̲t̲o̲r̲a̲g̲e̲

             A "fast access" storage area where a CIF can be
             kept during the first part of its lifetime.

             CIFs in Short Term Storage may be read, updated
             or deleted.

             CIFs in Short Term Storage will be organized in
             a way facilitating fast access and update to individual
             fields. This is done by letting each field start
             at a sector boundary. In this way fields may be
             expanded and updated without implied reading or
             copying of other fields. Cf. Section 2.2.1.3.

             When a field is extended, storage space will be
             allocated in blocks of several sectors in order
             to minimize the number of disk operations required
             to read and write the entire field or CIF. Block
             size is defined during formatting of MMS areas.

         b)  L̲o̲n̲g̲ ̲T̲e̲r̲m̲ ̲S̲t̲o̲r̲a̲g̲e̲

             CIFs which have completed the initial processing
             cycle will be put in Long Term Storage.

             CIFs in Long Term Storage may be read or deleted.
             Deletion can only take place by deleting a complete
             volume.

             As the CIFs in long term storage will not be updated,
             they will be stored in a packed form taking up
             as little space as possible.

             Long Term Storage will reside on a number of removable
             disk volumes.


         c)  I̲n̲t̲e̲r̲m̲e̲d̲i̲a̲t̲e̲ ̲S̲t̲o̲r̲a̲g̲e̲

             Intermediate Storage is always on-line and serves
             as a sort of a spooling area between Short Term
             and Long Term Storage.

             Short Term Storage and Intermediate Storage will
             together be called Online Storage.

             A CIF is called p̲e̲r̲m̲a̲n̲e̲n̲t̲ if it is subject to storage
             in Long Term Storage. CIFs which are not permanent
             will be called t̲e̲m̲p̲o̲r̲a̲r̲y̲.

         The possible transfers between storage types are shown
         on figure 2.2.1.1-2. The transfer functions have the
         following meaning:

         d)  D̲u̲m̲p̲

             Makes a copy of a CIF in a Dump File in Long Term
             Storage.

         e)  R̲e̲t̲r̲i̲e̲v̲e̲

             Makes a copy of part of a CIF in Short Term Storage.

         f)  U̲n̲l̲o̲a̲d̲

             Makes a copy of a CIF in Intermediate Storage and
             deletes the copy held in Short Term Storage.









          STORAGE
             TYPE                SHORT TERM      INTERMEDIATE    LONG
                                                                 TERM
CHARAC-
TERISTICS
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

PERMITTED ACCESS CREATE, DELETE  RETRIEVE        RETRIEVE
                 READ, WRITE
                 RETRIEVE
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

PERMITTED CIF    TEMPORARY       PERMANENT       PERMANENT
KINDS            PERMANENT
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

RESIDENCE PERIOD HOURS           DAYS            MONTHS

 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

ACCESSABILITY    ONLINE          ONLINE          OFFLINE, MOUNTED
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

OVERHEAD OF ACCESS               NO EXTRA DISK   EXTRA DISK      MOUNTING
                                                                 OF
                                                                 VO-
                 ACCESSES RE-    ACCESSES MAY    LUME PLUS EXTRA
                 QUIRED          BE REQUIRED     DISK ACCESSES MAY BE
                                                 REQUIRED
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

APPROXIMATE      6 M BYTES       32 M BYTES      EACH VOLUME
STORAGE SIZE                                     45 M BYTES
IN CAMPS
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲










          FIGURE 2.2.1.1-1…01…STORAGE TYPE CHARACTERISTICS








                         figure 2.2.1.1-2


2.2.1.2  C̲I̲F̲ ̲D̲i̲r̲e̲c̲t̲o̲r̲i̲e̲s̲

         On-line Storage and Long Term Storage will contain
         directories used to retrieve the stored CIFs.

         A directory is a table with an entry for each retrievable
         CIF in a certain part of the storage. The directory
         entry is referenced by CIF ID, cf. section 2.2.1.5,
         and contains a reference to stored CIF, enabling MMS
         to retrieve the CIF by CIF ID. Only permanent CIFs
         can be retrieved, and a CIF can only be retrieved when
         MMS has received at least one STORE command for the
         CIF, cf. section 2.2.1.5.



2.2.1.3  C̲I̲F̲ ̲a̲n̲d̲ ̲V̲i̲e̲w̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲



2.2.1.3.1    C̲I̲F̲s̲,̲ ̲F̲i̲e̲l̲d̲s̲ ̲a̲n̲d̲ ̲V̲i̲e̲w̲s̲



2.2.1.3.1.1 F̲i̲e̲l̲d̲

         A f̲i̲e̲l̲d̲ is an unstructured, variable length byte string.
         A field must be member of one and only one f̲i̲e̲l̲d̲ g̲r̲o̲u̲p̲.



2.2.1.3.1.2 F̲i̲e̲l̲d̲ ̲G̲r̲o̲u̲p̲

         A field group is a set of fields which are considered
         to be different incarnations of the same logical field.
         The fields within a field group need not have any other
         relationship other than being members of the same group.
         The number of fields in a group may be dynamically
         changed by creation of new fields or deletion of existing
         ones.

         The fields within a field group are identified by sequential
         numbers. The field number is allocated when the field
         is created.

         A field group must be member of exactly one CIF.



2.2.1.3.1.3 C̲I̲F̲

         A CIF is a set of field groups. The number of field
         groups is fixed, and defined at CIF creation time.

         The field groups within a CIF are identified by sequential
         numbers. Fields are identified by the pair of field
         group number and field number within the group.

         A field group within a CIF is considered existing even
         if it is empty.

         Field Numbers and Field Group Numbers are not known
         outside MMS.  Fields are referenced indirectly via
         Views.









                     FIGURE 2.2.1.3-1



2.2.1.3.1.4 V̲i̲e̲w̲

         A view is a subset of the fields within a CIF. A view
         consists of at most one field from each field group
         of the CIF. A view is represented by a list of field
         identifications.

         A view is said to r̲e̲f̲e̲r̲e̲n̲c̲e̲ a field if the field is
         contained in the view. The same field may be referenced
         by several views.

         A view is said to reference a field group if it references
         a field from the group. A view may then reference all
         field groups of the CIF or it may reference a subset
         of the field groups.

         The views associated with one CIF form a tree structure
         by a "successor" relation. A successor of a view is
         created by the CREATE VIEW function, which must have
         an existing view as parameter. This view will be called
         the "predecessor" of the created view.

         The first view associated with a CIF is automatically
         created together with the CIF. It references all the
         field groups of the CIF.

         A view can only reference a subset of the f̲i̲e̲l̲d̲ ̲g̲r̲o̲u̲p̲s̲
         referenced by its predecessor.

         One of the aims of the design presented in the following
         is that the successor tree of a CIF should as close
         as possible show the processing flow of the CIF through
         CAMPS.

         Figure 2.2.1.3-2 shows the CIF in figure 2.2.1.3-1
         with 2 views. View 2 is succession of view 1.

         Figure 2.2.1.3-3 shows a successor tree of views for
         the CIF in figure 2.2.1.3-1. The views e and i are
         views 1 and 2 respectively on figure 2.2.1.3-2. An
         x in a field id indicates that the corresponding field
         group is not referenced by the view.








                     FIGURE 2.2.1.3-2








                     Figure 2.2.1.3-3


2.2.1.3.2    C̲r̲e̲a̲t̲i̲o̲n̲ ̲a̲n̲d̲ ̲D̲e̲l̲e̲t̲i̲o̲n̲

         The commands referred to in this section are further
         described in the interface specifications in ref. b.



2.2.1.3.2.1 C̲I̲F̲ ̲C̲r̲e̲a̲t̲i̲o̲n̲ ̲a̲n̲d̲ ̲D̲e̲l̲e̲t̲i̲o̲n̲

         CREATE CIF command creates a new, initially empty,
         CIF. Parameters specify attributes, such as security,
         permanency and number of field groups. A CIF ID is
         returned for permanent CIFs.

         Each field group will be created with one field of
         initial length zero. A view will be created too. It
         consists of the first field in each field group. This
         view will be the root of the successor tree for the
         CIF.

         There is no direct way of deleting a CIF. It ceases
         to exist when all its fields have been deleted.



2.2.1.3.2.2 V̲i̲e̲w̲ ̲C̲r̲e̲a̲t̲i̲o̲n̲ ̲a̲n̲d̲ ̲D̲e̲l̲e̲t̲i̲o̲n̲

         The following description uses fig. 2.2.1.3-3 as example.

         The first view of a CIF is automatically created together
         with the CIF. It references field no. 1 of each field
         group (cf. fig. 2.2.1.3-3, a) and constitutes the root
         of the successor tree.

         Except from the root view, new views of a CIF are created
         by the CREATE VIEW command with the following parameters:

         Input:  Predecessor
                 Field Information

         The predecessor parameter specifies an existing view,
         and "field information" specifies those field groups
         which shall be referenced by the new view. The set
         of field groups must be a subset of those referenced
         by the predecessor view.



         For each of the referenced field groups there are two
         choices regarding the field to be referenced. It can
         either be the corresponding field of the predecessor
         view, or it can be a completely new field. In the latter
         case the field group is extended with a new field.

         Note that the view can only reference existing fields
         from its predecessor view. So there is for example
         no possibility to create a mixture of two views. Such
         a mixture can, however, be obtained by c̲o̲p̲y̲i̲n̲g̲ of fields,
         as field contents is not controlled.

         The fields of the new view can be defined in "field
         information" or can be defined successively by calling
         the CREATE FIELDS function. It specifies fields of
         the predecessor view to be included and field groups
         which shall be extended with new fields. For each field
         group it can only be defined once if the field shall
         be included or created.

         As there may be several active branches in the successor
         tree, there is no direct connection between the field
         number referenced by the predecessor and the number
         allocated by CREATE FIELDS. Figure 2.2.1.3-3 shows
         how several branches can intermix creation of new fields.
         The letters attached to the views indicate the sequence
         in which the views are created.

         A view is removed by the REMOVE VIEW or the SAVE command.
         These commands are generated by MMON and cannot be
         called directly by an application. The criteria for
         calling are defined by MMON.  Note that each Remove
         View command only removes an active handle for the
         view.  Refer 2.2.1.7.2 c.



2.2.1.3.2.3 F̲i̲e̲l̲d̲ ̲C̲r̲e̲a̲t̲i̲o̲n̲ ̲a̲n̲d̲ ̲D̲e̲l̲e̲t̲i̲o̲n̲

         A field is created as a result of one of the following
         commands:

         -   CREATE CIF creates the first field of each field
             group 

         -   CREATE VIEW and CREATE FIELDS can extend one or
             more field groups with a new field.


         The created fields are initially empty, and it is the
         responsibility of the application processes to build
         the contents of each field.

         A field cannot be directly deleted. It will exist as
         long as there is at least one view referencing it.
         When the last referencing view is deleted, however,
         the field is deleted. In figures 2.2.1.3-1, 2, and
         3 the fields 3.2, 4.1, and 4.2 have once existed, but
         they have been deleted together with the referencing
         views. One must thus imagine that in figure 2.2.1.3-2
         some more views have been in existence. They might
         for example have been used as intermediate drafts for
         the CIF in question.



2.2.1.3.3    F̲i̲e̲l̲d̲ ̲A̲c̲c̲e̲s̲s̲

         Fields are manipulated and accessed by application
         processes. A field can only be accessed via one of
         the views referencing the field.

         Similar to FM, MMS will impose two types of controls
         to field access:

         -   Security Control consists of comparing the security
             profiles of the CIF and the requesting process.

         -   Access Control consists of checking if the requested
             process has been granted permission to perform
             the requested access.

         While FM uses the User Group concept for Access Control,
         MMS relies on MMON for Access Control, except for control
         of field access rights associated with views, as described
         in the following.

         There are two different types of access rights to a
         field:

         -   Read access only allows to read the contents of
             the field.



         -   Write access allows to update the contents of the
             field either by changing the current contents or
             by appending information to the field.

         Each view referencing a field has an attached set of
         access rights to the field. It can either have read
         access only or it can have both read and write access.
         When a field is created the associated view will automatically
         get both read and write access to the field. When a
         field is included in a view the "field information"
         parameter must for each field group specify the access
         rights of the view to the field. The access rights
         specified must be a subset of the access rights possessed
         by the predecessor. Refer to figure 2.2.1.3-4.

         When an application process requests an operation to
         be performed on a field, e.g. "read" or "write", it
         must do so via a view referencing the field. It is
         then checked that the view references the field and
         has the proper access right to it.


         Figure 2.2.1.3-4 shows creation of a successor view
         of view1 on figure 2.2.1.3-2. Field group 2 is excluded
         in CREATE VIEW. Field 3.3 is included with specified
         access rights AR3'. Field groups 1 and 4 are extended
         with fields F1.4 and F 4.4 respectively. Access rights
         are automatically set to read a̲n̲d̲ write.



2.2.1.3.4    D̲i̲s̲k̲ ̲S̲p̲a̲c̲e̲ ̲A̲l̲l̲o̲c̲a̲t̲i̲o̲n̲

         This section describes the allocation for CIFs in STS.

         STS consists of a number of fixed length blocks, each
         of which consists of a number of sectors. Disk space
         is allocated to a CIF in whole blocks. The sectors
         within a block are allocated to the fields of the CIF.

         A field has two length variables associated with it.

         a)  Used Length specifies the number of bytes which
             have been written into the field. It may be increased
             when new information is added to the field.



         b)  Allocated Length specifies the number of sectors
             allocated to the field.

         When performing a Write operation on a field, MMS will
         automatically adjust Used Length. This may result in
         a need for more disk space, and MMS will then automatically
         allocate one or more sectors to the field and adjust
         Allocated Length.

         In addition to the automatic allocation, it is possible
         to preallocate disk space to a field when it is created.
         This may increase the probability that the sectors
         of the field are placed consecutively on disk and can
         thereby be read in a single disk access.










                     Figure 2.2.1.3-4



2.2.1.4  C̲I̲F̲ ̲A̲t̲t̲r̲i̲b̲u̲t̲e̲s̲



2.2.1.4.1    P̲e̲r̲m̲a̲n̲e̲n̲t̲ ̲C̲I̲F̲

         A permanent CIF can be stored in Long Term Storage.
         A unique CIF Identification is generated and returned
         by CREATE CIF, and an entry is allocated in the On-line
         CIF Directory.

         A CIF is called temporary if it is not permanent.

         For a permanent CIF each field group has an attribute
         specifying whether fields in that field group shall
         be stored. So a permanent CIF may contain "temporary"
         fields.

         A permanent CIF will not automatically be transferred
         to LTS. Two conditions shall be fulfilled:

         a)  One or more STORE commands shall be issued for
             the CIF

         b)  A DUMP command shall be issued to transfer the
             CIF to a Dump File in LTS.

         Cf. section 2.2.1.5.



2.2.1.4.2    R̲e̲c̲o̲v̲e̲r̲a̲b̲l̲e̲ ̲C̲I̲F̲

         A permanent CIF can be checkpointed and recovered,
         cf. section 2.2.2. 





2.2.1.4.3    S̲e̲c̲u̲r̲i̲t̲y̲ ̲P̲r̲o̲f̲i̲l̲e̲

         Each CIF has a KERNEL security profile, which is maintained
         by MMON.

         The use of security profile is described in section
         2.2.2.6.



2.2.1.4.4    A̲c̲c̲e̲s̲s̲ ̲P̲r̲o̲f̲i̲l̲e̲

         This is the Access Profile attached to a CIF by Message
         Monitor in CSF.  It is not used by MMS, but delivered
         to MMON when appropriate.



2.2.1.4.5    C̲I̲F̲ ̲V̲e̲r̲s̲i̲o̲n̲s̲

         It is expected that the normal way to handle different
         versions of the same CIF will be to have a number of
         different views with separate incarnations of some
         or all field groups.

         In a few cases it would, however, be appropriate to
         define a completely new CIF as the new version, namely
         if separate versions will be stored as completely independent
         entities and at different points in time.

         For this purpose the CIF ID will contain a version
         indicator. CREATE CIF will generate version number
         1. A command CREATE NEW CIF VERSION will create the
         next version of a given CIF. The parameters are:

         Input:  View Reference (of current version)

         Output: View Reference (of new version)
                 Attributes for the new version

         The version delivered as input parameter must be the
         latest version. The attributes will be inherited from
         the old to the new version.

         A CIF ID will thus consist of:

         a)  A 32 bits CIF REFERENCE NUMBER
         b)  An 8 bits VERSION INDICATOR


2.2.1.5  C̲I̲F̲ ̲S̲t̲o̲r̲a̲g̲e̲ ̲a̲n̲d̲ ̲R̲e̲t̲r̲i̲e̲v̲a̲l̲

         As seen from the applications, views are the entities
         which are subject to storage and retrieval.

         To s̲t̲o̲r̲e̲ a view means to retain it in the system in
         such a way that it can later on be made available.
         Stored views are eventually dumped to Long Term Storage.
         All the stored views of the same CIF are kept together.

         To r̲e̲t̲r̲i̲e̲v̲e̲ a view means to generate a t̲e̲m̲p̲o̲r̲a̲r̲y̲ CIF
         containing a copy of the view. The generated CIF will
         reside in Short Term Storage.

         To d̲u̲m̲p̲ a view means to transfer it to some dump file
         in Long Term Storage.

         Refer to figure 2.2.1.1-2 for the transfer involved.



2.2.1.5.1    S̲t̲o̲r̲a̲g̲e̲

         By definition a view is stored when it is copied from
         Short Term Storage to Long Term Storage.

         For the purpose of storage, the field groups of the
         view are divided into permanent field groups and temporary
         field groups. For a temporary CIF, all field groups
         are temporary.

         Fields belonging to a temporary field group cannot
         be stored. A field belonging to a permanent fieldgroup
         can be stored, but only if a STORE request is issued
         for a view referencing the field.

         Storage of a view may be requested by call of the STORE
         command with the following parameters.

         Input:  View Reference

         Output: CIF Identification
                 View identification

         Each view of a CIF has a unique identification which
         is returned by STORE. It may later on be used as input
         to RETRIEVE. STORE will be refused if the CIF is temporary.


         STORE will not cause an immediate transfer to Long
         Term Storage. The view is, however, marked as candidate
         for storage, and the so marked views of a CIF will
         eventually be u̲n̲l̲o̲a̲d̲e̲d̲ to Intermediate Storage. Unload
         will take place when all views of the CIF have been
         logically removed.  If a View is marked for storage,
         it is namely not physically removed until the CIF is
         unloaded.

         Unload of a CIF consists of the following steps:

         -   Collect those views for which one or more STORE
             requests have been issued.

         -   Collect the permanent fields of the collected views.

         -   Copy the collected views and fields to Intermediate
             Storage. Access rights of views are not stored.

         -   Update the On-line CIF Directory entry allocated
             for the CIF.

         -   Delete the CIF from Short Term Storage.

         Note that STORE is not accepted until the CIF has been
         checkpointed at least once, refer 2.2.2.2.



2.2.1.5.2    R̲e̲t̲r̲i̲e̲v̲a̲l̲

         By retrieval is meant the activity of locating a view,
         referenced by CIF ID, View ID and making the view accessible
         in Short Term Storage.

         Retrieval is done by the RETRIEVE command with the
         following parameters:

         Input:  Context Specifications
                 CIF ID
                 View ID

         Output: View Reference

         The Context Specification defines to MMS the directory
         which shall be searched for CIF ID. It can be the On-line
         CIF Directory or some Long Term Storage Directory.

         The view id must have been obtained from a previous
         STORE request.



         The retrieved view will automatically be furnished
         with read and write access right to all its fields,
         and the retrieved CIF will automatically be temporary.







                     figure 2.2.1.5-1







                     FIGURE 2.2.1.5-2








                     Figure 2.2.1.5-3


2.2.1.6  C̲I̲F̲ ̲a̲n̲d̲ ̲V̲i̲e̲w̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲i̲n̲g̲

         Except for Storage and Retrieval functions, a CIF can
         only be accessed when it resides in Short Term Storage.

         A CIF in Short Term Storage can only be referenced
         via one of its views.

         A view of a passive CIF is referenced by a View Id.
          Refer 2.2.1.7.

         A view of an active CIF is referenced by a View Reference,
         which is an integer. The View Reference is different
         from the View ID.

         The CIF ID used for storage and retrieval consists
         of a 32 bit CIF REFERENCE NUMBER and an 8 bit VERSION
         INDICATOR. A new CIF REFERENCE NUMBER is generated
         each time a new CIF is created by the CREATE CIF command.



2.2.1.7  A̲c̲t̲i̲v̲e̲ ̲a̲n̲d̲ ̲P̲a̲s̲s̲i̲v̲e̲ ̲C̲I̲F̲s̲

         A CIF in STS can be active or passive.

         An active CIF has a memory resident control structure
         describing the structure of the CIF in Views and Fields,
         and the disk areas occupied by the fields.  It can
         be accessed directly without extra disk accesses.

         A passive CIF has no memory resident control structure.
          The structure and address information for the CIF
         resides in a checkpoint on disk.  It can not be accessed
         directly.  Only a permanent CIF can be made passive.

         An active CIF is known by MMON in CSF, as MMON will
         have one or more Handles representing views of the
         CIF.

         A passive CIF is not known by MMON.  It can however
         be made available by the LOOKUP command with the parameters:

         Input:  CIF Id
                 View Id

         Output: View Reference



         This command will make the CIF active and return a
         reference to the specified view.  This reference can
         now be used for accessing the CIF as described previously.



2.2.1.7.1    H̲a̲n̲d̲l̲e̲s̲

         The state transitions between active and passive are
         controlled by socalled Handles.  So is the determination
         of when to unload a CIF.

         A handle to a CIF may be thought of as a hook, keeping
         the CIF in STS.  When there are no more handles, the
         CIF is unloaded to ITS or deleted depending upon possible
         STORE requests, refer 2.2.1.5.1.

         There are two kinds of handles, active and passive.
          An active handle keeps the CIF active while a passive
         handle just keeps it from being unloaded even if there
         are no active handles.

         Each CIF has an Active Handle Count and a Passive Handle
         Count, determining the number of active and passive
         handles respectively.

         Figure 2.2.1.7-1 shows how CIF states and handle counts
         are affected by functions performed upon the CIF. For
         each CIF, a pair of values specify active and passive
         handle count respectively. X and Y stand for integers
         greater than zero. In the following AHC and PHC are
         used as abbreviations for active and passive handle
         counts respectively.



2.2.1.7.2    C̲o̲m̲m̲a̲n̲d̲s̲ ̲A̲f̲f̲e̲c̲t̲i̲n̲g̲ ̲H̲a̲n̲d̲l̲e̲s̲

         a)  C̲I̲F̲ ̲C̲r̲e̲a̲t̲i̲o̲n̲

             The CIF is created by CREATE CIF or CREATE NEW
             CIF VERSION commands.  The AHC is set to one and
             PHC to zero.

         b)  V̲i̲e̲w̲ ̲C̲r̲e̲a̲t̲i̲o̲n̲

             The CREATE VIEW command creates a new active handle,
             thus incrementing AHC.



         c)  H̲a̲n̲d̲l̲e̲ ̲D̲e̲l̲e̲t̲i̲o̲n̲

             The Remove Handle function removes an active handle,
             thus decrementing AHC.  The function can be invoked
             by two different commands:

         c1) REMOVE VIEW
             Removes one active handle

         c2) SAVE
             Removes a number of active handles, specified by
             a parameter "Remove Handle List".  Refer 2.2.2.2.1.1
             c.

             Those commands are not called directly from application
             processes, but called by MMON as a result of the
             Dismantle View or Save View commands.

         d)  L̲o̲c̲k̲

             The LOCK VIEW command creates a passive handle,
             thus incrementing PHC.

         e)  U̲n̲l̲o̲c̲k̲

             The UNLOCK VIEW command removes a passive handle,
             thus decrementing PHC.

         f)  L̲o̲o̲k̲u̲p̲

             The LOOKUP command creates an active handle for
             a CIF having at least one passive handle.  It thus
             increments AHC.



2.2.1.7.3    C̲I̲F̲ ̲S̲t̲a̲t̲e̲ ̲T̲r̲a̲n̲s̲i̲t̲i̲o̲n̲s̲

         The state transitions between active, passive and unloaded
         are controlled by PHC and AHC as shown on figure 2.2.1.7-1.

         a)  An active CIF is made passive, if PHC is nonzero,
             and AHC changes from one to zero.

         b)  A passive CIF is made active, if AHC changes from
             zero to one.



         c)  An active CIF is unloaded, if PHC is zero, AHC
             changes from one to zero, and there has been at
             least one STORE request.  If there has been no
             STORE requests, it is just deleted.



2.2.1.7.4    H̲a̲n̲d̲l̲e̲s̲ ̲a̲n̲d̲ ̲C̲h̲e̲c̲k̲p̲o̲i̲n̲t̲s̲

         Passive Handles do not apply to temporary CIFs.  Thus
         retrieved CIFs can in particular not have passive handles,
         and can thus not move left in the diagram on figure
         2.2.1.7-1.

         Also a passive handle cannot be created for a CIF until
         it has been checkpointed at least once, refer 2.2.2.2.
          The LOCK command can thus not be issued until the
         first SAVE command has been made.



2.2.1.7.5    R̲e̲l̲a̲t̲i̲o̲n̲ ̲t̲o̲ ̲D̲u̲m̲p̲

         Refer to figure 2.2.1.1-2 and 2.2.1.5.

         A CIF, for which at least one STORE command has been
         issued, can be dumped in any of the states active,
         passive or unloaded.



2.2.1.7.6    H̲a̲n̲d̲l̲e̲s̲ ̲a̲n̲d̲ ̲V̲i̲e̲w̲s̲

         Handles are actually associated with views.  Each view
         has an active and a passive Handle Count.  This is
         of no importance to the previous description, as AHC
         and PHC are just the sums of the respective handle
         counts for all views of the CIF.










                      Fig. 2.2.1.7-1


2.2.1.8  F̲i̲l̲e̲ ̲M̲a̲n̲a̲g̲e̲m̲e̲n̲t̲

         The disk areas used by MMS are all organized as ordinary
         contiguous files.  Refer (i) 3.5.  There are two kinds
         of MMS Files:

         a)  M̲M̲S̲ ̲O̲n̲l̲i̲n̲e̲ ̲F̲i̲l̲e̲

             This is a file on Online Disk holding STS, ITS,
             and OCD.

         b)  D̲u̲m̲p̲ ̲F̲i̲l̲e̲

             This is a file on an offline volume holding a set
             of dumped CIFs.  There may be several dump files
             on each volume.  Refer 2.2.1.1.

         The files shall have the highest security classification
         and be protected from access via FMS from any application
         process in the active system.  They may however be
         accessed by privileged support software in standby
         system for error analysis etc.

         The files shall however, be created, catalogued and
         opened (looked up) by application processes using ordinary
         IOS commands:

         -   MMS Online Files shall be created and opened by
             SSC Package.

         -   Dump Files shall be created and opened by SAR Package.



2.2.1.8.1    F̲i̲l̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

         The MMS files must be made available for MMS before
         they can be accessed by MMS commands.

         An MMS file shall thus be opened by an application
         process, and a reference to the file be given to MMS
         before any MMS command accessing the file can be issued.
          And the file must be kept open during the period in
         which it will be used by MMS as described in the following.


         a)  M̲M̲S̲ ̲O̲n̲l̲i̲n̲e̲ ̲F̲i̲l̲e̲

             The file is created and opened by SSC.  The file
             reference is given to MMS as a parameter in the
             START SYSTEM command.  The file must be kept open
             by SSC during the active state of the PU.

         b)  D̲u̲m̲p̲ ̲F̲i̲l̲e̲s̲

             A Dump File must be created and catalogued by SAR
             before it can be used for dumps.  It must be kept
             open during the dump process.  The file reference
             is given to MMS as a parameter in each dump command.

             The Dump File must be looked up by SAR before dump
             to or retrieval from the file can take place. 
             The file reference is given to MMS as a parameter
             in the DUMP commands and in RETRIEVE command in
             case of offline retrieval.

         The file reference used by application processes is
         FDCB Index returned by IOS in Create File or Lookup
         File commands, refer (i) 4.2.4.1 and 4.2.5.2.

         The FDCB Index is by MMON converted to a File Descriptor
         as used on the IOS-FMS interface, refer (i) 
         4.3.4.



2.2.2    F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲R̲e̲s̲p̲o̲n̲s̲i̲b̲i̲l̲i̲t̲i̲e̲s̲



2.2.2.1  I̲n̲i̲t̲i̲a̲l̲i̲z̲a̲t̲i̲o̲n̲,̲ ̲C̲l̲o̲s̲e̲ ̲D̲o̲w̲n̲,̲ ̲a̲n̲d̲ ̲R̲e̲s̲t̲a̲r̲t̲

         The first command received by MMS must be the START
         command.  It is sent by MMON when SSC issues the START
         SYSTEM command.

         Input parameters to the Start Command are:

         -   Start-up Type, specifying Dead, Cold or Warm Start.

         -   File Descriptor referencing the MMS Online File
             as specified in 2.2.1.8.



         a)  D̲e̲a̲d̲ ̲o̲r̲ ̲C̲o̲l̲d̲ ̲S̲t̲a̲r̲t̲

             MMS shall initialize Short Term Storage and Intermediate
             Storage to the empty state, based on system generation
             parameters. Short Term Storage shall be purged.

         b)  W̲a̲r̲m̲ ̲S̲t̲a̲r̲t̲

             MMS shall restore the state of On-line CIF Directory
             and Intermediate Storage previous to the stop.
             If any activity was in progress in MMS, which temporarily
             made the storage inconsistent, this activity shall
             be terminated in a way that restores a consistent
             state.  Refer 2.2.2.4.

             CIFs in Short Term Storage shall be recovered as
             described in section 2.2.2.2.



2.2.2.2  C̲h̲e̲c̲k̲p̲o̲i̲n̲t̲i̲n̲g̲ ̲a̲n̲d̲ ̲R̲e̲c̲o̲v̲e̲r̲y̲



2.2.2.2.1    C̲h̲e̲c̲k̲p̲o̲i̲n̲t̲s̲

         Checkpoints are generated for individual CIFs. There
         is no relation between checkpoints for two different
         CIFs. Only permanent CIFs in Short Term Storage are
         checkpointed.

         A checkpoint for a CIF is a collection of information
         fulfilling the following objectives:

         a)  It shall make it possible to restore all information
             about the CIF, its fields and views, which is not
             always disk resident. This includes disk addressing
             information for the CIF fields.

         b)  It shall contain a "Checkpoint Parameter" section
             where Message Monitor data about queues etc. shall
             be kept.

         For a passive CIF the Checkpoint Parameter section
         is empty, and the checkpoint contains the information
         needed to make the CIF active, refer 2.2.1.7.

         A checkpoint will not contain data of the CIF, as all
         data reside in fields on disk.


         The recovery model for MMS is based on the following
         assumptions:

         1)  The processing flow for a CIF consists of a well
             defined set of successive steps, where output from
             one step serves as input for one or more succeeding
             steps.

         2)  It is possible to record in a checkpoint the CIF
             state resulting from a step in such a way that
             the CIF may after a system failure be "rolled back"
             to the beginning of latest step initiated before
             the failure.

         A sufficient but not necessary condition for this to
         be true is:

         3)  A processing step will only modify a CIF by appending
             to one or more of its fields. In that case the
             state prior to the beginning of the step may be
             restored by simply resetting field lengths to their
             values at the beginning of the step.

         A relaxed condition is that updates of any field does
         not overwrite any information which is used as input
         to a processing step after the checkpoint which the
         CIF can be rolled back to.

         It is the responsibility of application module designers
         to identify processing steps and to request MMS checkpointing
         of appropriate CIFs at appropriate points in processing
         flow.

         A checkpoint is requested by the Message Monitor call
         SAVE VIEW.





2.2.2.2.1.1 S̲A̲V̲E̲ ̲C̲o̲m̲m̲a̲n̲d̲

         Generation of a checkpoint is requested by a SAVE command
         from MMON to MMS with the following parameters:

         a)  A list of views of the same CIF. Those views shall
             be included in the checkpoint. The list may be
             empty.

         b)  A Checkpoint Parameter block which shall be included
             in the checkpoint.

         c)  A list of views which shall be removed after generation
             of the checkpoint. The list may be empty.

2.2.2.2.1.2 C̲h̲e̲c̲k̲p̲o̲i̲n̲t̲ ̲F̲i̲e̲l̲d̲

         Checkpoints are recorded as normal data in a Field
         Zero of the CIF. This field is not accessible by application
         processes.

         Subsequent checkpoints for the CIF are recorded in
         the field, each overwriting the previous one.

         The disk sector containing the start of field zero
         is referenced in the OCD entry for the CIF, which is
         created when the first SAVE Command is issued for the
         CIF.



2.2.2.2.2    R̲e̲c̲o̲v̲e̲r̲y̲ ̲A̲c̲t̲i̲o̲n̲s̲

         Recovery action consists of restoring all checkpointed
         CIFs in Short Term Storage to the state of the latest
         checkpoint, and to delete all other information from
         Short Term Storage.

         Recovery is performed after MMS initialization when
         Message Monitor issues a sequence of RESTORE commands.
         

         Each RESTORE command gives rise to the following actions:

         a)  Read next used entry in OCD.  Continue until an
             entry is found which references a CIF in STS. 
             Read the checkpoint referenced in OCD entry.



         b)  Reserve the disk blocks in Short Term Storage occupied
             by the CIF.

         c)  Restore the attribute and addressing information
             for the CIF, if it was active.  Otherwise repeat
             steps a) and b).

         d)  Return the Checkpoint Parameter block to Message
             Monitor.

         When the complete OCD has been scanned, the Short Term
         Storage disk blocks which have not been reserved in
         b) above shall be purged.

         The checkpoints are not affected by the recovery actions.

         Figures 2.2.2.2-1 and 2 illustrate the recovery actions.









                  Figure 2.2.2.2-1 and 2


2.2.2.3  E̲r̲r̲o̲r̲ ̲D̲e̲t̲e̲c̲t̲i̲o̲n̲ ̲a̲n̲d̲ ̲E̲r̲r̲o̲r̲ ̲H̲a̲n̲d̲l̲i̲n̲g̲

         Parameters which are supplied by application processes
         shall be checked by both MMS and MMON. Parameters which
         shall be checked especially by MMS are:

         -   Field information
         -   View Access Rights to fields
         -   Checkpoint and Handle affecting commands

         Errors are signalled by a completion code in response
         returned to MMON. The completion code consists of:

         -   Error classification
         -   Error code

         Error classification has two possible values:

         -   Serious parameter error
         -   Nonserious error

         Two error classes are serious:

         -   Security Violations
         -   Parameter errors which indicate major logical flaws
             in calling application. An example is a STORE command
             on a non permanent CIF.

         Error code defines the error. Serious errors are expected
         to result in a retire of the application process by
         MMON.

         If both online disks fail, it results in a retire of
         FMS process.  Disk errors on offline volumes are returned
         by completion codes.

         Section 2.3.3.1 shows a number of design constraints.
          Violation of any of them will result in a normal completion
         code.





2.2.2.4  I̲n̲t̲e̲g̲r̲i̲t̲y̲ ̲o̲f̲ ̲O̲p̲e̲r̲a̲t̲i̲o̲n̲

         Data in On-Line Storage and On-Line CIF Directory shall
         be recorded on dualized disk equipment.

         In cases where an update of MMS control structures
         such as checkpoints and OCD cannot be done in one single
         disk access, there may be a risk of inconsistent data
         if a system failure occurs during the update.  In such
         cases MMS shall use update methods enabling a completion
         of the update after restart.

         The method used is to record in a Recovery Block on
         disk the intention to update, and the data needed to
         complete the update after restart.  Refer 2.2.2.1 b.


2.2.2.5  D̲a̲t̲a̲ ̲C̲o̲l̲l̲e̲c̲t̲i̲o̲n̲

         MMS shall collect statistics information which can
         be used for Performance Monitoring purposes.  The figures
         collected are:

         -   Average number of sectors per read operation.

         -   Average number of sectors per write operation.

         -   Average number of sector modifications per write
             operation.  A sector modification is one requiring
             that the sector is read from disk before it is
             written again.

         -   Number of internally generated sector accesses.
              This represents the overhead of checkpointing
             etc.

         -   Maximum number of pending commands to MMS.

         -   Accumulated time in which MMS is idle.

         -   Accumulated time in which MMS is busy.
             This means that if a new command arrives to MMS
             it must be queued.

         -   Number of STORE requests.

         -   Number of RETRIEVE requests.

         The statistics figures are obtained by the STP package
         calling the GET MMS STATISTICS function.  This will
         also cause a reset of the figures.



2.2.2.6  S̲e̲c̲u̲r̲i̲t̲y̲



2.2.2.6.1    S̲e̲c̲u̲r̲i̲t̲y̲ ̲P̲r̲o̲f̲i̲l̲e̲

         MMS shall for each CIF maintain a security profile
         with 3 compartments:

         -   Security Classification
         -   ATOMAL Designator
         -   ENCRYPTED Designator

         Refer (i) 3.2


         For compatibility with FMS a security check shall be
         performed on each read and write operation to a CIF.
         This shall ensure that the normal DAMOS security policy
         is followed.

         The security profile can be changed by the CHANGE ATTRIBUTES
         command.

         Only a trusted process can reduce the profile.



2.2.2.6.2    P̲u̲r̲g̲e̲ ̲o̲f̲ ̲D̲i̲s̲k̲ ̲a̲n̲d̲ ̲M̲e̲m̲o̲r̲y̲

         A Purge Profile defined at system generation time is
         used to control purge of memory buffers and disk blocks.

         Deallocated memory buffers and disk blocks shall be
         purged if they have been used for certain types of
         information.

         As part of MMS recovery, non-allocated blocks of STS
         shall be purged.



2.2.2.6.3    S̲t̲o̲r̲a̲g̲e̲ ̲C̲o̲n̲t̲r̲o̲l̲

         A Store Profile is defined at System Generation Time.
         STORE requests will only be accepted for CIFs having
         a security profile contained in the Store Profile.



2.2.2.7  S̲t̲o̲r̲a̲g̲e̲ ̲A̲c̲c̲o̲u̲n̲t̲i̲n̲g̲ ̲a̲n̲d̲ ̲M̲o̲n̲i̲t̲o̲r̲i̲n̲g̲



2.2.2.7.1    S̲t̲o̲r̲a̲g̲e̲ ̲O̲c̲c̲u̲p̲a̲n̲c̲y̲

         MMS shall maintain figures showing the amount of free
         storage area in STS and ITS.

         The figures can be obtained by calling the command
         GET STORAGE OCCUPANCY.




2.2.2.7.2    T̲h̲r̲e̲s̲h̲o̲l̲d̲ ̲W̲a̲r̲n̲i̲n̲g̲

         MMS shall recognize threshold values for the amount
         of free storage area in STS and ITS.

         The command GET ̲THRESHOLD ̲WARNING shall be returned
         by MMS when an threshold is exceeded.

         If a warning has  been returned, the next one will
         not be returned until the storage area has been above
         an Enable Threshold.



2.3      C̲H̲A̲R̲A̲C̲T̲E̲R̲I̲S̲T̲I̲C̲S̲

         The timing and throughput requirements are based on
         the assumption that 95 per cent of all CIFs can be
         stored in Short Term Storage with all addressing information
         kept in memory.



2.3.1    T̲i̲m̲i̲n̲g̲

         The total time used to perform a function is composed
         of two parts:

         -   The CPU time used by MMS, FMS and Disk Handler.

         -   The time used by the disk system to perform the
             physical transfer.

         The CPU time includes time for process communication,
         DMA transfers and interrupt handling.

         Section 2.3.1.1 shows the CPU time used by the major
         MMS functions. The total time used to perform a request
         can then be calculated by adding the disk transfer
         time and the time used by MMON and by FMS Command Controller
         and Disk Cache Manager, refer (e) and (f) plus the
         time used by the Disk Handler, ref. fig. 2.1.1-1.





2.3.1.1  C̲P̲U̲ ̲U̲s̲a̲g̲e̲


         CREATE CIF                       4 msec
         CREATE VIEW                      4  -
         READ VIEW                       10  -
         WRITE VIEW                      10  -
         SAVE                            10  - (+ msec for
         STORE                            1  -  first Save 
                                                Command) 
         …06…1         …02…   …02…   …02…   …02…                               
                    



2.3.2    T̲h̲r̲o̲u̲g̲h̲p̲u̲t̲

         MMS can perform 25 READ VIEW, WRITE VIEW, or RESTORE
         commands in a busy second.



2.3.2.1  S̲t̲o̲r̲a̲g̲e̲ ̲C̲a̲p̲a̲c̲i̲t̲y̲

         The storage capacity of Short Term Storage is limited
         by the need to keep addressing information in memory.

         It is assumed that addressing information for active
         CIFs is kept in memory, and for inactive CIFs it is
         kept on disk. When a CIF becomes active, its addressing
         information is transferred to memory.

         The average resource requirements for CIFs are assumed
         to be:

                            ACTIVE CIF      INACTIVE CIF

         Views                   3               1
         Field Groups           10               5
         Fields                 13               5

         The MMS Short Term Storage Allocation is then:

         Active CIFs:          600
         Inactive CIFs:        600



         The number of active CIFs corresponds to 1 hour of
         busy traffic plus 40 items which are under editing.

         The Memory Consumption is shown in 2.3.5.



2.3.2.1.1    D̲i̲s̲k̲ ̲C̲o̲n̲s̲u̲m̲p̲t̲i̲o̲n̲

         The contents of MMS Online File (refer 2.2.1.8.1) is:

         a)  S̲h̲o̲r̲t̲ ̲T̲e̲r̲m̲ ̲S̲t̲o̲r̲a̲g̲e̲

             800 CIFs of average size 7750 bytes           6.2
             MB

         b)  I̲n̲t̲e̲r̲m̲e̲d̲i̲a̲t̲e̲ ̲S̲t̲o̲r̲a̲g̲e̲

             12500 CIFs of average size 2500 bytes        31.3
             MB

         c)  O̲n̲l̲i̲n̲e̲ ̲C̲I̲F̲ ̲D̲i̲r̲e̲c̲t̲o̲r̲y̲

             34 Disk Blocks of 4000 bytes                 0.2
             MB

         d)  R̲e̲c̲o̲v̲e̲r̲y̲ ̲B̲l̲o̲c̲k̲

             1 Disk Block of 4000 bytes

             Total size of MMS Online File:              38
               MB



2.3.3.1  M̲M̲S̲ ̲D̲e̲s̲i̲g̲n̲ ̲C̲o̲n̲s̲t̲r̲a̲i̲n̲t̲s̲

         The flexibility of MMS is limited by the following
         design constraints:

         a)  Maximum size of a Disk block:            4096 bytes

         b)  Maximum number of Disk Blocks in
             Short Term Storage                         32 K

         c)  Maximum length of one field:               32 K
                                                      bytes

         d)  Maximum number of field groups
             in a CIF:                                  12

         e)  Maximum number of fields in a field
             group                                      31



         f)  Maximum number of views referencing
             a CIF                                      31



2.3.4    A̲c̲c̲u̲r̲a̲c̲y̲

         Not applicable.



2.3.5    M̲e̲m̲o̲r̲y̲ ̲C̲o̲n̲s̲u̲m̲p̲t̲i̲o̲n̲

         The memory requirements for control structures are
         estimated as follows:

         One CIFCB per CIF                        13 words
         One VCB per View                         10 words
         Address information per Field             4 words

         Using the estimates of section 2.3.2.1, the following
         consumption figures are calculated:

         a)  Fixed Amount

             Working variables                  3500 words
             Checkpoint buffer                   500 words

         b)  Variable Amount

              600   CIFCBs                      7800 words
             1800   VCBs                       18000 words
             7800   Field Address Information  31200 words

         c)  Total Memory Consumption

             Program                           17500 words
             Data                             61000 words




                      3̲ ̲ ̲E̲N̲V̲I̲R̲O̲N̲M̲E̲N̲T̲



3.1      E̲Q̲U̲I̲P̲M̲E̲N̲T̲

         MMS executes in one PU with at least one CPU.

         MMS cannot utilize more than one CPU concurrently.

         Short Term and Intermediate storage are residing on
         the same disk, which shall be dualized due to integrity
         of operation.

         Long Term Storage resides on a number of removable
         disks.



3.2      S̲O̲F̲T̲W̲A̲R̲E̲



3.2.1    S̲y̲s̲t̲e̲m̲ ̲S̲o̲f̲t̲w̲a̲r̲e̲

         MMS uses the KERNEL and the FMS software packages.



3.2.2    D̲e̲v̲e̲l̲o̲p̲m̲e̲n̲t̲ ̲S̲u̲p̲p̲o̲r̲t̲ ̲S̲o̲f̲t̲w̲a̲r̲e̲

         The software used for development of this package is
         contained in Support Software Package.



3.3      I̲N̲T̲E̲R̲F̲A̲C̲E̲S̲



3.3.1    E̲x̲t̲e̲r̲n̲a̲l̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲

         Not applicable.



3.3.2    P̲a̲c̲k̲a̲g̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲

         Not applicable.


3.4      F̲U̲N̲C̲T̲I̲O̲N̲S̲ ̲M̲A̲I̲N̲T̲A̲I̲N̲E̲D̲ ̲B̲Y̲ ̲O̲T̲H̲E̲R̲ ̲P̲A̲C̲K̲A̲G̲E̲S̲



3.4.1    K̲E̲R̲N̲E̲L̲

         MMS relies on the protection and process communication
         facilities supplied by KERNEL.



3.4.2    F̲M̲S̲

         MMS uses FMS facilities for interface to application
         processes and disk.



3.4.3    C̲S̲F̲

         Message Monitor performs the following tasks connected
         to CIF handling:

         -   Security and Access Control
         -   Address Parameter Check
         -   Checkpoint Information Collection
         -   Recovery Assistance





                    4̲ ̲ ̲P̲A̲C̲K̲A̲G̲E̲ ̲D̲E̲S̲I̲G̲N̲



4.1      P̲A̲C̲K̲A̲G̲E̲ ̲O̲V̲E̲R̲V̲I̲E̲W̲



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̲

         An overview of MMS functions is given in figure 4.1.1-1.

         For details refer to subpackage specifications, section
         4.2.



4.1.1.1  S̲e̲c̲u̲r̲i̲t̲y̲ ̲P̲r̲o̲f̲i̲l̲e̲s̲

         The security profile in a CAMPS system contains three
         compartments:

             a)  Security Classification, ranging from the value
                 0 for Unclassified to 4 for CTS.

             b)  Atomal Designator with values 0 for non-atomal
                 and 1 for atomal information.

             c)  Encrypted designator with values for 0 for
                 non-encrypted and 1 for encrypted information.

         There are two purposes of the security profile:

             d)  To determine if deallocated memory buffers
                 and disk blocks shall be purged before reuse.

             e)  To check that the general DAMOS security rules
                 are followed. As the security and access control
                 requirements of CAMPS are implemented in CSF
                 and SSC packages, the DAMOS security rules
                 are implemented for compatibility reasons with
                 FMS.

         Each CIF has an associated security profile. The profile
         is specified in the CREATE CIF command and may be changed
         by the CHANGE ATTRIBUTES command.



         Each process has an associated security profile. This
         profile is inserted by Message Monitor into the Command
         Body Standard Part of each command to MMS.

         Security profiles can be compared using the following
         rule:

             Profile (a) is contained in
             profile (b) if the value for each compartment in
             profile (a) is lower than (lower than or equal
             to) the corresponding value in profile (b).

         M̲e̲m̲o̲r̲y̲ ̲B̲u̲f̲f̲e̲r̲s̲

         When a disk block is deallocated from a CIF, the CIF
         profile is compared with the purge profile. If the
         CIF profile is not contained in the purge profile,
         the block shall be purged immediately after deallocation.

         According to CAMPS requirements, the purge profile
         will be:

         -   Security Classification = 3 (secret)
         -   Atomal Compartment      = 0 (non-atomal)
         -   Encryption Compartment  = 0 (non-encrypted)

         The above rules will then assure that purge will be
         performed for information of security classification
         CTS or special handling designator Atomal or category
         Encrypted.

         The Store Profile (refer 2.2.2.6.3) will be the same
         as the Purge Profile.











               Fig. 4.1.1-1…01…MMS Subpackages


4.1.2    S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲

         MMS is implemented as a set of coroutines within the
         File Management Process.  Ref. figure 2.1.1-1.

         There are two types of coroutines:

         a)  M̲e̲s̲s̲a̲g̲e̲ ̲H̲a̲n̲d̲l̲e̲r̲ ̲C̲o̲r̲o̲u̲t̲i̲n̲e̲

             This type of coroutine executes commands from application
             processes.  There is a number of incarnations of
             the coroutine, so that several commands can be
             processed in parallel.  Each coroutine can execute
             commands associated with any of the subpackages.

         b)  D̲i̲s̲k̲ ̲P̲u̲r̲g̲e̲ ̲C̲o̲r̲o̲u̲t̲i̲n̲e̲

             Purges deallocated disk blocks before they can
             be reused.  There is one incarnation of this coroutine.
              It belongs entirely to CIF Handling subpackage.

         The subpackage functions are implemented as a set of
         procedures called from the coroutines.  The Message
         Handler Coroutines execute commands on behalf of all
         subpackages.

         The number of Message Handler coroutines is 2.




4.1.3    D̲a̲t̲a̲ ̲F̲l̲o̲w̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲L̲o̲g̲i̲c̲



4.1.3.1  M̲a̲i̲n̲ ̲F̲l̲o̲w̲

         The main flow in MMS is shown on figure 4.1.3-1.

         The Command Handler Module executes the main loop of
         the Message Handler Coroutines.  Refer 4.1.2.

         MMS commands from application processes are queued
         by FMS Command Controller.  Refer (e) and figure 2.1.1-1.
          The Command Handler when it is idle, gets the next
         command.  The Command Code is inspected, and the appropriate
         Command Execution Procedure is called.  It can be within
         the Command Handler itself or within one of the other
         subpackages.

         All commands requiring disk accesses ultimately call
         upon Disk IO which interfaces to FMS Disk Cache Manager.

         Command Parameters refer (b) 3.2.7.1 are handled in
         the following way:

         -   The Get MMS Command returns a command operation,
             refer (e).  A pointer to this operation is stored
             in the coroutine variable OPERATION, refer 4.1.4.3.4.2.

         -   Command Execution procedures must generate reply
             parameters in the coroutine variables CC and REPLY.

         -   Command Handler delivers the reply parameters to
             Command Controller in the Reply Command call.

         Parameters in Command Trailer and Data Buffer are transferred
         by command execution procedures.

         Figure 4.1.3-1 does not show detailed interface between
         subpackages.



4.1.3.2  R̲e̲s̲e̲r̲v̲a̲t̲i̲o̲n̲ ̲M̲e̲c̲h̲a̲n̲i̲s̲m̲s̲

         In order to avoid inconsistencies due to concurrent
         access to memory or disk resident data structures,
         two reservation mechanisms are used as described in
         the following sections.


4.1.3.2.1    C̲I̲F̲ ̲R̲e̲s̲e̲r̲v̲a̲t̲i̲o̲n̲

         Each function accessing  an active CIF must reserve
         the CIF for exclusive access during those phases of
         the processing where it is needed.  Such phases are
         often referred to as critical regions.

         For this purpose, a CIF Control Block reservation mechanism
         and two CIF Handling Procedures Open and Close are
         used.  Refer 4.1.5.2.2 and 3.  Open shall be called
         before any access to the active CIF is attempted. 
         Close shall be called when the processing is terminated.



4.1.3.2.2    O̲C̲D̲ ̲R̲e̲s̲e̲r̲v̲a̲t̲i̲o̲n̲

         All functions requiring access to OCD, ITS or checkpoints
         must ensure exclusive access to these interrelated
         data structures.  This is done by means of two common
         procedures Reserve OCD, refer 4.1.5.7 and Release OCD,
         refer 4.1.5.8.

         Figure 4.1.3-2 gives an overview of functions accessing
         OCD and/or checkpoints.



4.1.3.2.3    D̲e̲a̲d̲l̲o̲c̲k̲ ̲P̲r̲e̲v̲e̲n̲t̲i̲o̲n̲

         Certain functions need reservation of OCD as well as
         CIF.  In order to prevent deadlocks such reservations
         m̲u̲s̲t̲ ̲a̲l̲w̲a̲y̲s̲ be done in the following sequence:

         -   Open CIF
             …0e….…0e…
             …0e….…0f…
             …0e….…0e…

         -   Reserve OCD
             …0e….…0f…
             …0e….…0f…
             …0e….…0f…

         -   Release OCD
             …0e….…0f…
             …0e….…0f…
             …0e….…0f…



         -   Close CIF

         Note that OCD reservation may be done by Open CIF,
         if the boolean call parameter LOCK ̲OCD is true.  In
         that case Close CIF will release OCD automatically.
          The sequence applies however, to cases where CIF and
         OCD are not reserved or released at the same time.



4.1.3.3  D̲i̲s̲k̲ ̲I̲O̲

         All Disk IO is done via the Disk IO Subpackage procedures.
          The caller of such procedures must supply a Disk Buffer
         (refer 4.1.4.3.8) which is a data structure used by
         Disk IO procedures to manage the IO request, and also
         contains certain call and return parameters for the
         request.

         There are two types of disk buffers:

         -   I̲O̲ ̲B̲u̲f̲f̲e̲r̲

             This is a buffer in each message handler coroutine.
              It can be used by command execution procedures
             called by the coroutine without particular precaution.

         -   I̲T̲S̲ ̲B̲u̲f̲f̲e̲r̲

             This is a buffer which is shared between coroutines,
             and used for special purposes, in particular when
             copy of disk areas must be performed, but also
             for access to OCD, ITS etc.  There is only one
             such buffer, and it must only be used while OCD
             is reserved, refer 4.1.3.2.2.

         Note in particular the use of fields Operation Profile
         and Operation Type in Disk Buffer, refer 4.2.5.1.



4.1.3.4  C̲I̲F̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲ ̲L̲o̲g̲i̲c̲

         Figure 4.1.3-3 shows the Reference Logic for a permanent
         CIF, for which at least one SAVE command has been issued.

         The OCD Entry contains the address of the CIF in STS
         or in ITS.  The STS address is first sector of the
         checkpoint.



         The packed CIF in ITS contains CIF Id as indirect reference
         to OCD Entry.

         If CIF is active, the checkpoint references the CIF
         Control Block, which again references the Checkpoint
         via Address Elements for field zero.



4.1.3.5  C̲I̲F̲ ̲S̲t̲a̲t̲e̲ ̲T̲r̲a̲n̲s̲i̲t̲i̲o̲n̲s̲

         The state transitions between Active, Passive and Unloaded
         are described in 2.2.1.7.









                       Fig. 4.1.3-1



                                OCD             CKP

                          Read    Update    Read    Update
 Function
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

 Create CIF

 Create new CIF version

 Create View
 
 Create Fields

 Get View Attributes

 Lock View                                          
                                                    
                                                    
                                                    X

 Unlock View                                        
                                                    
                                                    
                                                    X

 Lookup                    X                 X      
                                                    
                                                    
                                                    X

 Stop CIF                                           
                                                    
                                                    
                                                    X

 Change Attributes                                  
                                                    
                                                    
                                                    X

 Read View

 Write View

 Store

 Retrieve (online)         X                 X

 Init Dump

 Dump CIF Sequence         X                 X

 Terminate Dump

 Clear                             X

 Save                              X                
                                                    
                                                    X

 Remove View                       X                
                                                    
                                                    X

 Get Threshold Warning

 G̲e̲t̲ ̲S̲t̲o̲r̲a̲g̲e̲ ̲O̲c̲c̲u̲p̲a̲n̲c̲y̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

      Fig. 4.1.3-2…01…O̲C̲D̲ ̲a̲n̲d̲ ̲C̲h̲e̲c̲k̲p̲o̲i̲n̲t̲ ̲A̲c̲c̲e̲s̲s̲







Fig. 4.1.3-3…01…Relation between CIFCB, Checkpoint and ITS


4.1.4    C̲o̲m̲m̲o̲n̲ ̲P̲a̲c̲k̲a̲g̲e̲ ̲D̲a̲t̲a̲



4.1.4.1  C̲o̲n̲s̲t̲a̲n̲t̲s̲

         Refer MMS ̲PREFIX.S



4.1.4.2  P̲r̲i̲m̲i̲t̲i̲v̲e̲ ̲T̲y̲p̲e̲s̲

         Refer MMS ̲PREFIX.S



4.1.4.3  M̲e̲m̲o̲r̲y̲ ̲R̲e̲s̲i̲d̲e̲n̲t̲ ̲D̲a̲t̲a̲

         Refer MMS ̲COMVAR.S and figure 4.1.4.3-1 thru 4.1.4.3-14.










       FIGURE 4.1.4.3-1…01…CIF Control Block







       FIGURE 4.1.4.3-2…01…View Control Block






        FIGURE 4.1.4.3-3…01…Field Reference







       FIGURE 4.1.4.3-4…01…Block List Element





     FIGURE 4.1.4.3-5…01…Short Field Descriptor





     FIGURE 4.1.4.3-6…01…Long Field Descriptor









         FIGURE 4.1.4.3-7…01…Field Fragment






       FIGURE 4.1.4.3-8…01…CIF Address Block









                Figure 4.1.4.3-9

                 Lock Descriptor









          FIGURE 4.1.4.3-10…01…Disk Buffer







         FIGURE 4.1.4.3-11…01…Cache Buffer








          Fig. 4.1.4.3-12…01…Field Buffer









         Fig. 4.1.4.3-13…01…Field Sequence







                 Fig. 4.1.4.3-14


4.1.4.4  D̲i̲s̲k̲ ̲R̲e̲s̲i̲d̲e̲n̲t̲ ̲D̲a̲t̲a̲

         MMS Online File contains following data areas:
         (Refer figure 4.1.4.4-1)

         -   Short Term Storage       NO ̲OF ̲STS ̲BLOCKS Disk
                                      Blocks
         -   Intermediate Storage     NO ̲OF ̲ITS ̲BLOCKS Disk
                                      Blocks
         -   Online CIF Directory     NO ̲OF ̲OCD ̲BLOCKS + NO
                                      ̲OF ̲TERTIARY ̲BLOCKS Disk
                                      Blocks
         -   Recovery Block           1 Disk Block
                                      Refer 2.2.2.4
         -   ITS Control Block        1 Sector
                                      Contains current value
                                      of ITS Clear Pointer.

         ITS ̲CONTROL ̲BLOCK =

         RECORD

             ITS ̲CLEAR:               NO ̲OF ̲ITS ̲SECTORS
                                      current value of ITS
                                      clear pointer
             DUMMY:                   ARRAY(1..255) OF INTEGER

         END

         Dump Files are described in section 4.2.3.

















































                     FIGURE 4.1.4.4-1



4.1.5    C̲o̲m̲m̲o̲n̲ ̲P̲a̲c̲k̲a̲g̲e̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲



4.1.5.1  G̲e̲t̲ ̲C̲I̲F̲



4.1.5.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 REF of OPERATION is used to locate a View Control
         Block, and the associated CIF Control Block.



4.1.5.1.2    I̲n̲t̲e̲r̲f̲a̲c̲e̲

         GET ̲CIF()( CIFCB:            CIF ̲CONTROL ̲BLOCK,
                      VBC:            VIEW ̲CONTROL ̲BLOCK,
                       CC:            COMPLETION ̲CODE):ERROR
                                      ̲OK

         C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲C̲o̲d̲e̲s̲

         -   ILLEGAL ̲VIEW ̲REF



4.1.5.1.3    D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

             a̲)̲ ̲D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             Refer MMS ̲PREFIX.S

             b̲)̲ ̲E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             OPERATION ̲REF
             VIEW ̲CONTROL ̲BLOCK.CIFCB

             c̲)̲ ̲L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲ ̲

             None



4.1.5.1.4    P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲

         Refer 4.1.5.1.1





4.1.5.2  O̲p̲e̲n̲ ̲C̲I̲F̲



4.1.5.2.1    F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

         Makes an active CIF ready to be operated upon by calling
         coroutine. The CIF will be reserved for the coroutine.
         If specified in the LOCK ̲OCD call parameter, OCD is
         reserved as well. The return parameter LOCK must later
         on be used in a CLOSE CIF command.
         Error return is taken, if the CIF Control Block is
         in the state Removing. Then Close CIF must not be called.



4.1.5.2.2    I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲

         OPEN ̲CIF( CIFCB:             CIF ̲CONTROL ̲BLOCK,
                   LOCK ̲OCD:          BOOLEAN)
                 ( LOCK:              LOCK ̲DESCRIPTOR,
                    CC:               COMPLETION ̲CODE):ERROR
                                      ̲OK

         C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲C̲o̲d̲e̲s̲

         -   NON ̲EXISTING ̲CIF



4.1.5.2.3    D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         a)  D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             Refer MMS ̲PREFIX.S

         b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

         b1) LOCK ̲DESCRIPTOR          (m)

         c)  L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲

             None



4.1.5.2.4    P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲

         Flowgram:   fig. 4.1.5.2.4-1





         OPEN ̲CIF(CIFCB:              CIF ̲CONTROL ̲BLOCK,
                  LOCK ̲OCD:           BOOLEAN)
                 (LOCK:               LOCK ̲DESCRIPTOR,
                  CC:                 COMP ̲CODE): ERROR ̲OK;

         START

         CIFCB.CIF ̲LOCK EQ 0?

         locate LOCK                  get free
         from CIFCB.CIF ̲LOCK          LOCK, put in ref to CIFCB

                                      LOCK.LOCK ̲COUNT = 1

         INCREMENT(LOCK.LOCK ̲COUNT)   CIFCB.CIF ̲LOCK =
                                      index to LOCK

         LOCK.LOCK ̲COUNT GT 1?

                                      WAIT ̲CM(LOCK.SEMAPHORE)

         LOCK ̲OCD EQ TRUE?

                                      RESERVE ̲OCD

                                      LOCK.OCD ̲LOCKED ̲STATUS
                                      = TRUE

         LOCK.CIFCB EQ NIL?           CLOSE ̲CIF(LOCK)

         CC = OK                      CC = none existing CIF

         RETURN(CC)

         STOP










                     Fig. 4.1.5.2.4-1

                    Open CIF Flowgram



4.1.5.3  C̲l̲o̲s̲e̲ ̲C̲I̲F̲



4.1.5.3.1    F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

         Releases an active CIF which has previously been reserved
         by Open CIF.  If OCD was reserved, it is released too.



4.1.5.3.2    I̲n̲t̲e̲r̲f̲a̲c̲e̲

         CLOSE ̲CIF (LOCK:             LOCK ̲DESCRIPTOR)



4.1.5.3.3    D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         a)  D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             Refer MMS ̲PREFIX.S

         b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

         b1) CIF ̲CONTROL ̲BLOCK        (m)

         c)  L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲

             None



4.1.5.3.4    P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲

         Flowgram    fig. 4.1.5.3.4-1


         CLOSE ̲CIF(LOCK: LOCK ̲DESCRIPTOR)

         START

         LOCK.OCD ̲LOCKED ̲STATUS EQ TRUE?

                                      RELEASE ̲OCD

                               LOCK.OCD ̲LOCKED ̲STATUS = FALSE

         DECREMENT(LOCK.LOCK ̲COUNT)

         LOCK.LOCK ̲COUNT LE 0?

         SIGNAL ̲CM(LOCK.SEMAPHORE)    put LOCK back
                                      into free list
                                      CIFCB.CIF ̲LOCK = NIL

         RETURN


























                    FIGURE 4.1.5.3.4-1

                    Close CIF Flowgram



4.1.5.4  M̲M̲S̲ ̲R̲e̲t̲i̲r̲e̲



4.1.5.4.1    F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

         Retires FMS process in case of an irreparable error.
         The Impossible Entry is used for software errors in
         MMS.  The IO Error Entry is used for IO Errors on online
         disk.  The cause and specified completion code is sent
         to parent process.



4.1.5.4.2    I̲n̲t̲e̲r̲f̲a̲c̲e̲

         IMPOSSIBLE (CC:              COMPLETION ̲CODE)



4.1.5.4.3    D̲a̲t̲a̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

         N/A



4.1.5.4.4    P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲

         Call the kernel procedure Retire, refer (i) 4.1.3.6
         with primary code = IMPOSSIBLE, secondary code = CC.



4.1.5.5  C̲h̲e̲c̲k̲ ̲S̲e̲c̲u̲r̲i̲t̲y̲



4.1.5.5.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 procedure check if security classification of profile1
         is lower than or equal to profile2 or if any lists
         in rest of profile1 occur in profile2. Error return
         if any of the condition are fulfilled.



4.1.5.5.2    I̲n̲t̲e̲r̲f̲a̲c̲e̲

         CHECK ̲SECURITY (PROFILE ̲1,
                         PROFILE ̲2: SEC ̲PROFILE): ERROR ̲OK





4.1.5.5.3    D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         a)  D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             Refer source list

         b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             None

         c)  L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲

             None



4.1.5.5.4    P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲

         Refer source list.



4.1.5.6  C̲o̲m̲p̲u̲t̲e̲ ̲O̲b̲j̲e̲c̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲



4.1.5.6.1    F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

         This procedure converts an object pointer into an object
         reference consisting of a segment identification and
         an index within the segment.

         The object shall be either a CIFCB pointer or a VCB
         pointer.



4.1.5.6.2    I̲n̲t̲e̲r̲f̲a̲c̲e̲

         COMPUTE ̲OBJECT (POOL:        POOL ̲TYPE
                         OBJECT:      POINTER)
                        (OBJECT:      MMS ̲VIEV ̲REFERENCE)



4.1.5.6.3    D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         a)  D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             Refer source list.



         b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             SEGM ̲DESCR
             COROUTINES (m)

         c)  L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲

             None



4.1.5.6.4    P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲

         Refer 4.1.5.6.1



4.1.5.7  C̲o̲n̲v̲e̲r̲t̲ ̲O̲b̲j̲e̲c̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲



4.1.5.7.1    F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

         This procedure converts an object reference consisting
         of a segment identification and a segment index into
         a object pointer.

         The object reference shall be a reference to either
         a VCB or a CIFCB.



4.1.5.7.2    I̲n̲t̲e̲r̲f̲a̲c̲e̲

         CONVERT ̲OBJECT (POOL:        POOL ̲TYPE
                         OBJ ̲REF:     MMS ̲VIEV ̲REFERENCE)
                        (OBJECT:      POINTER)



4.1.5.7.3    D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         a)  D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             Refer source list.

         b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             SEGM ̲DESCR
             COROUTINES



         c)  L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲

             None



4.1.5.7.4    P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲

         Refer 4.1.5.7.1



4.1.5.8  C̲r̲e̲a̲t̲e̲ ̲S̲e̲g̲m̲e̲n̲t̲



4.1.5.8.1    F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

         Create a data segment by a call to the page manager.
         The handle to the segment is stored in the Segment
         Descriptor.



4.1.5.8.2    I̲n̲t̲e̲r̲f̲a̲c̲e̲

         MMS ̲CREATE ̲SEGMENT (SEGM ̲DESCR:  SEGM ̲CB)



4.1.5.8.3    D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         a)  D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             Refer source list.

         b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             FMS ̲ATTR
             USER ̲PARAMETER
             SEGM ̲DESCR (m)

         c)  L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲

             WORK ̲SEG ̲ATTR:  SEGMENT ̲ATTR



4.1.5.8.4    P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲

         Refer 4.1.5.8.1





4.1.5.9  M̲a̲p̲ ̲i̲n̲ ̲F̲r̲e̲e̲



4.1.5.9.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 referenced segment is mapped in on the page demanded
         by a call to the page manager.



4.1.5.9.2    I̲n̲t̲e̲r̲f̲a̲c̲e̲

         MMS ̲MAP IN FREE (PAGE:       INTEGER
                          SEGM ̲DESCR: SEGM ̲CB)
                         (SIZE:       INTEGER)



4.1.5.9.3    D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         a)  D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             Refer source list.

         b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             SEGM ̲DESCR (m)

         c)  L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲

             None



4.1.5.9.4    P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲

         Refer 4.1.5.9.1



4.1.5.10 E̲n̲s̲u̲r̲e̲ ̲S̲e̲g̲m̲e̲n̲t̲



4.1.5.10.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 referenced segment is mapped in if not already
         mapped in.

         The coroutine record is updated with segment ID and
         segment start position.





4.1.5.10.2   I̲n̲t̲e̲r̲f̲a̲c̲e̲

         ENSURE ̲SEGMENT  (SEGM ̲ID     INDEX)



4.1.5.10.3   D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         a)  D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             Refer source list.

         b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             SEGM ̲DESCR 
             COROUTINE (m)

         c)  L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲

             None



4.1.5.10.4   P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲

         Refer 4.1.5.10.1



4.1.5.11 G̲e̲n̲e̲r̲a̲l̲ ̲C̲M̲O̲N̲ ̲a̲n̲d̲ ̲C̲T̲R̲L̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲



4.1.5.11.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 purpose of these procedures are to call a service
         procedure within the Coroutine Monitor or the FMS Command
         Controller.

         Before the call of the service procedure the state
         of the MMS memory is stored in the coroutine record.

         After return from the service procedure the state of
         the MMS memory is restored from the coroutine record.



4.1.5.11.2   I̲n̲t̲e̲r̲f̲a̲c̲e̲

         MMS ̲WAIT            (SEMAPHORE: POINTER)

         MMS ̲WAIT ̲OP         (OPERATION,
                              SEMAPHORE: POINTER)



         MMS ̲REPLY ̲CMD ̲LARGE (CMD ̲OPERATION,
                              DESTINATION: POINTER,
                              SIZE:        INTEGER)

         MMS ̲RECEIVE ̲WORDS   (CMD ̲OPERATION,
                              DATA ̲BUFFER: POINTER,
                              SIZE:        INTEGER)
                             (CC:          COMPLETION ̲CODE)

         MMS ̲SEND ̲WORDS      (CMD ̲OPERATION,
                              DATA ̲BUFFER: POINTER,
                              SIZE:        INTEGER)
                             (CC:          COMPLETION ̲CODE)

         MMS ̲RECEIVE ̲SECTOR  (CMD ̲OPERATION,
                              FIRST ̲SECTOR: POINTER,
                              BYTE ̲OFFSET,
                              BYTE ̲SIZE:    INTEGER)
                             (CC:           COMPLETION ̲CODE)

         MMS ̲SEND ̲SECTOR     (CMD ̲OPERATION,
                              FIRST ̲SECTOR: POINTER,
                              BYTE ̲OFFSET,
                              BYTE ̲SIZE:    INTEGER)
                             (CC:           COMPLETION ̲CODE)

         MMS ̲SKIP SOURCE     (CMD ̲OPERATION: POINTER,
                              NO ̲OF ̲TLES:    COUNTER)
                             (CC:            COMPLETION ̲CODE)



4.1.5.11.3   D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         a)  D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             Refer source list.

         b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             COROUTINE (m)

         c)  L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲

             None



4.1.5.11.4   P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲

         Refer source list.



4.1.6    G̲l̲o̲b̲a̲l̲ ̲D̲a̲t̲a̲

         The Type Definitions for data structures exchanged
         with application packages are defined in (c), section
         4.

         Type Definitions for data structure exchanged with
         DAMOS Coroutine Monitor are defined in (j)

         Type Definitions for data structures exchanged with
         FMS are defined in (e) and (f).