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

⟦3deb8c640⟧ Wang Wps File

    Length: 37525 (0x9295)
    Types: Wang Wps File
    Notes: CPS/SDS/001  ISSUE 1      
    Names: »0683A «

Derivation

└─⟦6472223e8⟧ Bits:30006010 8" Wang WCS floppy, CR 0045A
    └─ ⟦this⟧ »0683A « 

WangText



…13……0b……13……00……13……05……12……09……12……0a……12……0c……12……0e……12……00……12…
…12…    …12……86…1
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     …02…
     
     
     
     
     
    …02… 
     …02…
     
     
     
     

…02…CPS/SDS/001

…02…OKH/810227…02……02…
CAMPS
 SYSTEM
 DESIGN
 SPECIFICATION
…02……02…CAMPS









                 T̲A̲B̲L̲E̲ ̲O̲F̲ ̲C̲O̲N̲T̲E̲N̲T̲S̲



   5.8   CAMPS System Functions ................ 349
     5.8.1 Summary of Requirements ............. 349
       5.8.1.1 General Description ............. 349
         5.8.1.1.1 Purpose ..................... 349
         5.8.1.1.2 Package Interfaces .......... 350
         5.8.1.1.3 External Interfaces ......... 351

       5.8.1.2 Functions ....................... 361
         5.8.1.2.1 Shared Data Functions ....... 361
         5.8.1.2.2 Audit Collection Functions .. 362
         5.8.1.2.3 Monitor Functions ........... 363
           5.8.1.2.3.1 Queues .................. 363
           5.8.1.2.3.2 Queue Elements .......... 366
           5.8.1.2.3.3 Queue Monitor Functions . 369
           5.8.1.2.3.4 Queue Monitor Design
                       Considerations .......... 371
           5.8.1.2.3.5 Message Monitor ......... 372
           5.8.1.2.3.6 Message Monitor Functions 373
           5.8.1.2.3.7 Security and Access 
                       Control ................. 377
           5.8.1.2.3.8 Message Monitor Recovery  379
           5.8.1.2.3.9 Message Monitor Design
                       Considerations .......... 380
           5.8.1.2.3.10  Timer Monitor ......... 380

         5.8.1.2.4 Trace Function .............. 382

       5.8.1.3 CSF Control ..................... 383
         5.8.1.3.1 Parameter Control ........... 383
         5.8.1.3.2 Initialization .............. 383
         5.8.1.3.3 Error Handling .............. 383

       5.8.1.4 Characteristics ................. 384
         5.8.1.4.1 Availability ................ 384
         5.8.1.4.2 Security .................... 384

       5.8.1.5 Design and Construction ......... 384
       5.8.1.6 Documentation ................... 384

     5.8.2 Environment ......................... 384
       5.8.2.1 Standard Hardware, Firmware and
               Software ........................ 384
       5.8.2.2 External Interfaces ............. 385
       5.8.2.3 Sub-system Interfaces ........... 385


5.8      C̲A̲M̲P̲S̲ ̲S̲Y̲S̲T̲E̲M̲ ̲F̲U̲N̲C̲T̲I̲O̲N̲S̲



5.8.1    S̲u̲m̲m̲a̲r̲y̲ ̲o̲f̲ ̲R̲e̲q̲u̲i̲r̲e̲m̲e̲n̲t̲s̲



5.8.1.1  G̲e̲n̲e̲r̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲



5.8.1.1.1    P̲u̲r̲p̲o̲s̲e̲

         CSF is a package of support functions, which together
         with KER, IOC, and TMP form the software environment
         for CAMPS packages.

         CSF contains four groups of functions:

         1)  S̲h̲a̲r̲e̲d̲ ̲D̲a̲t̲a̲ ̲S̲u̲p̲p̲o̲r̲t̲

             Tools for synchronizing access to shared variables
             and for management of shared buffer pools.

         2)  A̲u̲d̲i̲t̲ ̲C̲o̲l̲l̲e̲c̲t̲i̲o̲n̲ ̲S̲u̲p̲p̲o̲r̲t̲

             Tools for collection of statistics, log, and report
             records on behalf of the packages handling those
             auditing data.

         3)  M̲o̲n̲i̲t̲o̲r̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲

             a)  Timer Monitor supplying various timer facilities.

             b)  Queue Monitor with tools for queuing of messages
                 and other events between CAMPS modules.

             c)  Message Monitor, which together with SFM package
                 supplies a set of tools for message management
                 and control of message flow.  It performs the
                 following tasks:

                 1)  M̲e̲s̲s̲a̲g̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲i̲n̲g̲

                     Tools for referencing messages via queue
                     elements or message identification.



                 2)  M̲e̲s̲s̲a̲g̲e̲ ̲V̲i̲e̲w̲

                     Transformation between the stored structure
                     of a message and the structure needed by
                     application modules.

                 3)  S̲e̲c̲u̲r̲i̲t̲y̲ ̲a̲n̲d̲ ̲A̲c̲c̲e̲s̲s̲ ̲C̲o̲n̲t̲r̲o̲l̲

                     Message Monitor is the central point for
                     the CAMPS specific high level security
                     and access control functions.

                 4)  M̲e̲s̲s̲a̲g̲e̲ ̲T̲r̲a̲n̲s̲i̲t̲i̲o̲n̲ ̲C̲o̲n̲t̲r̲o̲l̲

                     Tools by which application modules can
                     cooperate in controlling the state and
                     processing flow of messages.

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

                 6)  S̲F̲M̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲

                     Functions for access to items containing
                     messages.

         4)  T̲r̲a̲c̲e̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲

             A system testing tool enabling a trace of CAMPS
             module activities.



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

         a)  I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲t̲o̲ ̲K̲E̲R̲

             CSF makes use of KER facilities to perform its
             functions.  Especially important are the following
             KER functions:

             1)  P̲a̲g̲e̲ ̲M̲a̲n̲a̲g̲e̲m̲e̲n̲t̲

                 Used to implement data sharing and protect
                 shared data against illegal access in user
                 mode, when needed.

             2)  P̲r̲o̲c̲e̲s̲s̲ ̲C̲o̲m̲m̲u̲n̲i̲c̲a̲t̲i̲o̲n̲

                 Used to synchronize access to shared data and
                 to implement queuing functions.


             3)  R̲e̲a̲l̲ ̲T̲i̲m̲e̲ ̲C̲l̲o̲c̲k̲

                 Used to implement timer management.

             As CSF manages shared, but protected data, it will
             mostly execute in system mode, invoked by MON calls.

         b)  I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲t̲o̲ ̲S̲F̲M̲

             Message Monitor within CSF is the interface mechanism
             to the M̲essage M̲anagement S̲ystem (MMS) component
             of SFM.  This means that all access from CAMPS
             application modules to MMS will go through Message
             Monitor.

             In addition, CSF makes use of SFM to save all data
             in case of a CLOSE DOWN.

         c)  O̲t̲h̲e̲r̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲

             As a support package, CSF is used by all CAMPS
             packages as shown on the interface charts.  The
             interfaces to KER are not specifically shown on
             those charts.



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

         CSF has no external interfaces.

















































Fig. 5.8.1.1.2-1
SHARED DATA SUPPORT INTERFACES











































         1)  Set Time
         2)  Get Time
         3)  Request Time-out
         4)  Regret Time-out
         5)  Send to Queue
         6)  Receive from Queue

      Fig. 5.8.1.1.2-…01…TIMER MONITOR INTERFACE CHART









































         1)  Save
         2)  Restore
         3)  Send Multiple
         4)  Initialize
         5)  Stop
         6)  Initialize
         7)  Dismantle

           Fig. 5.8.1.1.2-2, 3, 4, 5, 6, 7 og 8
         MESSAGE MONITOR RECOVERY INTERFACE CHART











































         1)  Open message
         2)  Open notification
         3)  Security interrogation and/or security warning
         4)  Open confirmation
         5)  Return from open call
         6)  Terminal may now access message and write it out.

  Fig. 5.8.1.1.2-…01…SECURITY INTERROGATION INTERFACE CHART






































         1)  Initialize              10)  Read Bytes/Field Group
         2)  Open Interrogation      11)  Modify Bytes
         3)  Open Confirmation       12)  Append Bytes
         4)  Dump                    13)  Message Monitor uses
                                     all
         5)  Retrieve                     Message Management
                                     System
         6)  Create Message               Functions
         7)  Create next version     14)  Check Security
         8)  Open Message            15)  Access Message Control
                                     Block
         9)  Close Message           16)  Error Report
                                     17)  Send Multiple
                                     18)  Get/Put MCB Fields

          Fig. ?…01…MESSAGE MONITOR INTERFACE CHART

















































Fig. 5.8.1.1.2-
QUEUE MONITOR REQUEST - REPLY INTERFACE CHART










































         1)  Initialize
         2)  Send
         3)  Receive
         4)  Return
         5)  Dismantle
         6)  Error Report

           Fig. ?…01…QUEUE MONITOR INTERFACE CHART










































         1)  Collect Statistics      6)  Log Area Full
         2)  Collect Log             7)  Update Variable
         3)  Collect Report          8)  Read Variable
         4)  Reserve Variable        9)  Send to Queue
         5)  Release Variable        10) Receive from Queue

    Fig. 5.8.1.1.2-2…01…AUDIT COLLECTION INTERFACE CHART












































         1)  Reserve Buffer
         2)  Release Buffer
         3)  Reserve Variable
         4)  Release Variable
         5)  Any other CSF function request

     Fig. 5.8.1.1.2-1…01…SHARED DATA SUPPORT INTERFACES



5.8.1.2  F̲u̲n̲c̲t̲i̲o̲n̲s̲



5.8.1.2.1    S̲h̲a̲r̲e̲d̲ ̲D̲a̲t̲a̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲

         Refer to figure 5.8.1.1.2-1.

         Shared data are divided into two data types, shared
         variables and shared buffers.

         a)  S̲h̲a̲r̲e̲d̲ ̲V̲a̲r̲i̲a̲b̲l̲e̲s̲

             Permanent data which may be updated and read by
             CAMPS modules either directly or via CSF functions.

             Most cases of reading and all cases of updating
             a shared variable require synchronization in order
             that several modules do not access the variable
             at the same time.  This is done by means of the
             following two functions:

             1)  R̲E̲S̲E̲R̲V̲E̲ ̲V̲A̲R̲I̲A̲B̲L̲E̲

                 Gives the caller exclusive access to the shared
                 variable.  If another module has already gained
                 exclusive access, the caller will be suspended,
                 waiting for the other module to release the
                 variable.  Input:  Variable Name.

             2)  R̲E̲L̲E̲A̲S̲E̲ ̲V̲A̲R̲I̲A̲B̲L̲E̲

                 Releases a previously reserved variable.
                 Input:  Variable Name.

         b)  S̲h̲a̲r̲e̲d̲ ̲B̲u̲f̲f̲e̲r̲s̲

             CSF manages a number of buffer pools which are
             partly used for internal CSF purposes, such as
             queue elements, message control blocks, timer control
             blocks etc. and  may partly be used by other packages
             as dynamic working space.  Dynamic buffers have
             different lengths and the requestor must specify
             the required buffer length when allocating a buffer.


             Two functions are used for allocation and deallocation
             of dynamic buffers:

             1)  R̲E̲S̲E̲R̲V̲E̲ ̲B̲U̲F̲F̲E̲R̲

                 Allocates a dynamic buffer of the length specified
                 and maps it into the caller's address space
                 at the specified logical address.  If no buffer
                 is currently available, the caller will be
                 suspended, waiting for another module to release
                 a buffer of the appropriate length.

                 Input:  Buffer Length
                         Logical Address

             2)  R̲E̲L̲E̲A̲S̲E̲ ̲B̲U̲F̲F̲E̲R̲

                 Returns a previously allocated buffer.
                 Input:  Logical Address.

         c)  D̲e̲s̲i̲g̲n̲ ̲C̲o̲n̲s̲i̲d̲e̲r̲a̲t̲i̲o̲n̲s̲

             1)  The reserve functions may require a time-out
                 limit, so that a module will not wait indefinitely
                 for a variable or a buffer.

             2)  It is assumed that shared variables are independent,
                 so that they are reserved and released one
                 at a time.  Otherwise, a deadlock may occur.
                  If the assumption is invalid, some measure
                 for deadlock prevention must be considered.

             3)  The need for shared buffers as dynamic working
                 storage is still considered.



5.8.1.2.2    A̲u̲d̲i̲t̲ ̲C̲o̲l̲l̲e̲c̲t̲i̲o̲n̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲

         The audit collection functions act as interfaces between
         CAMPS modules and the appropriate audit processing
         packages shown to the right on figure 5.8.1.1.2-2.


         There are two main purposes of introducing the audit
         collection functions:

         1)  To make it as easy and uniform as possible for
             application modules to generate audit data.  In
             particular it should be possible to introduce new
             types of for example statistics without extensive
             changes in existing statistics generation mechanisms.

         2)  To protect audit data from direct access by application
             modules.



5.8.1.2.3    M̲o̲n̲i̲t̲o̲r̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲



5.8.1.2.3.1  Q̲u̲e̲u̲e̲s̲

             The queue is the major intermodule communication
             tool within CAMPS.  In special cases such as interface
             to SFM and to IOC, the lower level Kernel interprocess
             communication tool is used.  This is also the basis
             for the queue concepts of CSF.

             The CSF monitor functions are using queues as a
             basic tool for various purposes, so the following
             description of queues and queue elements applies
             to all monitor functions.

             a)  Q̲u̲e̲u̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲

                 A queue is basically a linked list of information
                 elements, called q̲u̲e̲u̲e̲ ̲e̲l̲e̲m̲e̲n̲t̲s̲, sorted according
                 to a priority.  The number of priorities associated
                 with each queue is predefined.  So each queue
                 is structured into a predefined number of s̲u̲b̲-̲q̲u̲e̲u̲e̲s̲,
                 with one sub-queue per priority level.


                 Each sub-queue is handled as an FIFO list.
                  The sub-queue priority is not directly related
                 to the CAMPS precedence levels, but it will
                 be used to implement generalized precedence
                 queues.

                 The queue structure is visualized overleaf
                 in figure 5.8.1.2.3.1.1-1.

















































Fig. 5.8.1.2.3.1.1-1
QUEUE STRUCTURE.  TWO PRIORITY 1 and ONE PRIORITY 3 ELEMENTS
 WAITING.



             2)  Q̲u̲e̲u̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲i̲n̲g̲

                 A Queue Monitor function may reference a main
                 queue or a sub-queue within a main queue.

                 A m̲a̲i̲n̲ ̲q̲u̲e̲u̲e̲ id is an integer.

                 A s̲u̲b̲-̲q̲u̲e̲u̲e̲ ̲i̲n̲d̲e̲x̲ is an integer, defining the
                 sub-queue number within the main queue.

                 A s̲u̲b̲-̲q̲u̲e̲u̲e̲ ̲i̲d̲ is a pair:  main queue id, sub-queue
                 index.

                 A q̲u̲e̲u̲e̲ ̲i̲d̲ is a main queue id or a sub-queue
                 id.

                 A sub-queue id with index = 0 specifies the
                 main queue.

             3)  Q̲u̲e̲u̲e̲ ̲L̲e̲n̲g̲t̲h̲

                 The l̲e̲n̲g̲t̲h̲ of a sub-queue is the number of
                 elements in it.  The length of a main queue
                 is the sum of the lengths of its sub-queues.

                 A queue may have a t̲h̲r̲e̲s̲h̲o̲l̲d̲ length associated
                 with it.  If the queue length exceeds the threshold,
                 a warning report is sent to a report queue,
                 and the queue may be moved to disk.  It is
                 still possible to send elements to the queue,
                 but at the cost of one or more disk accesses
                 per queue operation.

             4)  Q̲u̲e̲u̲e̲ ̲T̲i̲m̲e̲-̲o̲u̲t̲

                 A sub-queue may have an optional time-out limit
                 associated with it.  The Queue Monitor will
                 then assure that no elements remain in the
                 queue for longer than the specified period.
                  If an element is timed out, it will automatically
                 be sent to a specified disposal queue.



5.8.1.2.3.2 Q̲u̲e̲u̲e̲ ̲E̲l̲e̲m̲e̲n̲t̲s̲

         The objects which may be put into queues are called
         q̲u̲e̲u̲e̲ elements, abbreviated to QEL.



         A QEL will normally contain a reference to the "real"
         object queued, e.g. a message.  This means that an
         object may at the same time reside in several queues.
          In case of a message queued in more than one queue,
         it is then the task of Message Monitor to keep track
         of the concurrent use of the message by more than one
         CAMPS module.

         a)  Q̲u̲e̲u̲e̲ ̲E̲l̲e̲m̲e̲n̲t̲ ̲F̲i̲e̲l̲d̲s̲

             1)  O̲b̲j̲e̲c̲t̲ ̲T̲y̲p̲e̲

                 Describes the type of object referenced by
                 the QEL, e.g.:

                 1.1)  Message
                 1.2)  Shared Buffer
                 1.3)  Time-out Event from Timer Monitor
                 1.4)  Function Request or Reply (ref. section
                 
                       5.8.1.2.3.3.b)

             2)  O̲b̲j̲e̲c̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲

                 The way of referencing the object depends upon
                 object type.  For messages, the reference identifies
                 the message control block.  For time-out events
                 it contains the event id.

             3)  P̲r̲e̲c̲e̲d̲e̲n̲c̲e̲

                 Where applicable, this field specifies object
                 precedence to be used when queuing an object.

             4)  T̲i̲m̲e̲ ̲S̲t̲a̲m̲p̲

                 Date and Time group of insertion into the queue.
                  As this field may be used for performance
                 monitoring, the precision is 0.1 sec.

             5)  O̲w̲n̲e̲r̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲

                 When a QEL has been "received" from a queue,
                 this field identifies the CAMPS module having
                 received the QEL.  The field is used for access
                 control purposes.



             6)  I̲n̲f̲o̲r̲m̲a̲t̲i̲o̲n̲ ̲F̲i̲e̲l̲d̲

                 For some object types, the information referenced
                 will be contained in the QEL itself.  This
                 is for example the case with function requests.

         b)  C̲r̲e̲a̲t̲i̲o̲n̲ ̲a̲n̲d̲ ̲D̲e̲l̲e̲t̲i̲o̲n̲ ̲o̲f̲ ̲Q̲u̲e̲u̲e̲ ̲E̲l̲e̲m̲e̲n̲t̲s̲

             A QEL is basically an object reference, and an
             object, e.g. a message, may at a given time be
             referenced by a number of QEL's.  Thus the events
             causing creation and removal of QEL's are not the
             same as the events causing creation and removal
             of the referenced objects.

             The following example describes the situation for
             message referencing QEL's.

             1)  C̲r̲e̲a̲t̲i̲o̲n̲ ̲o̲f̲ ̲a̲ ̲Q̲E̲L̲

                 When a message is created by the Message Monitor
                 function Create Message, a QEL is created.
                  This QEL will subsequently be used by the
                 caller for all references to the message.

                 When a message is sent to another queue, a
                 new queue element is created and inserted into
                 the destination queue.  Thus the original QEL
                 still exists and can be used by the caller
                 for subsequent message access or for additional
                 send calls.

             2)  D̲e̲l̲e̲t̲i̲o̲n̲ ̲o̲f̲ ̲a̲ ̲Q̲E̲L̲

                 When a CAMPS module has used a QEL, and has
                 terminated the use, it must indicate that the
                 QEL can be deleted.  This is done by the Dismantle
                 function.  Some Message Monitor functions may
                 implicitly dismantle the corresponding QEL.
                  This will be indicated specifically under
                 each function.





5.8.1.2.3.3 Q̲u̲e̲u̲e̲ ̲M̲o̲n̲i̲t̲o̲r̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲

         This section describes the "pure" queue handling functions.
          There is a number of additional functions especially
         concerned with messages and recovery of message queues.
          These functions are described under Message Monitor.

         a)  S̲e̲n̲d̲ ̲-̲ ̲R̲e̲c̲e̲i̲v̲e̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲

             1)  S̲e̲n̲d̲

                 Sends an object to a specified sub-queue. 
                 The function creates a new QEL and inserts
                 it into the specified destination queue.  The
                 QEL used as input parameter is still available
                 to the caller.

                 Input:  QEL
                         Subqueue Id.

             2)  R̲e̲c̲e̲i̲v̲e̲

                 The caller receives the n'th free element in
                 the queue, and the element is reserved for
                 the caller.  If the queue is empty or delay
                    o, the caller will be suspended until either
                 an element is sent to the queue or delay expires.
                  A zero delay indicates that an immediate return
                 must be made if the queue is empty.  If n is
                 greater than the queue length, an error code
                 is returned.

                 The queue element is reserved by the caller
                 until it is either "dismantled" or "returned".

                 Input:  Queue id
                         n
                         Delay

                 Output: QEL

             3)  R̲e̲t̲u̲r̲n̲

                 The queue element is inserted into the queue
                 at the position previously occupied.  The reservation
                 caused by a previous receive is cancelled.

                 Input:  QEL



             4)  D̲i̲s̲m̲a̲n̲t̲l̲e̲

                 Indicates that the caller will not use the
                 specified QEL any more.  After the call, the
                 QEL will no longer exist.  The call may also
                 have the effect that the object referenced
                 by the QEL is destroyed.

                 Input:  QEL

         b)  F̲u̲n̲c̲t̲i̲o̲n̲ ̲R̲e̲q̲u̲e̲s̲t̲s̲

             Are used to send short request strings to service
             modules and await the completion of the request.

             A function request contains the identification
             of an answer queue to which a completion notification
             must be sent.

             The user of this feature should distinguish between
             synchronous and asynchronous requests:

             1)  A request is synchronous if the caller wants
                 to wait until completion of the requested function.
                  In this case the caller must have a specific
                 queue which is only used for completion notifications.

             2)  A request is asynchronous if the caller wants
                 to do other jobs concurrently with function
                 execution.  In this case, the completion notification
                 should be sent to the queue where the caller
                 receives its "normal" information.

                 The request-reply interface mechanism is shown
                 on figure 5.8.1.1.2-8.

             3)  S̲e̲n̲d̲ ̲R̲e̲q̲u̲e̲s̲t̲

                 Sends a function request to the specified destination
                 queue.

                 Input:  Destination queue id.
                         Answer (sub) queue id.
                         Parameter string

             4)  S̲e̲n̲d̲ ̲R̲e̲p̲l̲y̲

                 Sends a completion notification corresponding
                 to a previously received request.  The notification
                 may contain a text string.


                 Input:  Queue element
                         Text string

         c)  A̲u̲x̲i̲l̲i̲a̲r̲y̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲

             1)  G̲e̲t̲ ̲Q̲u̲e̲u̲e̲ ̲L̲e̲n̲g̲t̲h̲

                 Returns the number of elements in a queue.

             2)  I̲n̲i̲t̲i̲a̲l̲i̲z̲e̲

                 Initializes the queues and queue elements.



5.8.1.2.3.4 Q̲u̲e̲u̲e̲ ̲M̲o̲n̲i̲t̲o̲r̲ ̲D̲e̲s̲i̲g̲n̲ ̲C̲o̲n̲s̲i̲d̲e̲r̲a̲t̲i̲o̲n̲s̲

         A number of queue function issues are still considered,
         as the requirements from using modules are still not
         fully identified.  They are briefly described in the
         following.

         a)  M̲u̲l̲t̲i̲p̲l̲e̲ ̲R̲e̲c̲e̲i̲v̲e̲

             This function would make it possible to receive
             from several queues in one call, and to wait for
             an element to be put into one of several empty
             queues.

         b)  P̲e̲r̲f̲o̲r̲m̲a̲n̲c̲e̲ ̲M̲o̲n̲i̲t̲o̲r̲i̲n̲g̲

             Gives tools for monitoring maximum, minimum and
             average queue lengths and queue waiting times for
             selected queues.

         c)  C̲l̲o̲s̲e̲ ̲Q̲u̲e̲u̲e̲

             Makes it possible to stop subsequent insertions
             into a sub-queue.

         d)  C̲o̲m̲b̲i̲n̲e̲d̲ ̲W̲a̲i̲t̲

             Makes it possible to combine I/O wait with wait
             on queues.



5.8.1.2.3.5 M̲e̲s̲s̲a̲g̲e̲ ̲M̲o̲n̲i̲t̲o̲r̲

         MMON is the interface between CAMPS application modules
         and the SFM M̲essage M̲anagement S̲ystem (MMS).  It implements
         the more CAMPS dependent aspects of message management.
          Together with SFM it forms a CAMPS Message Manager.

         Messages are created, manipulated, stored in Historic
         Data Base and retrieved under control of MMON.

         a)  M̲e̲s̲s̲a̲g̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲i̲n̲g̲

             For security reasons, applications never have a
             direct reference to a message.  Any reference to
             a message must be done either via a QEL (queue
             element) or via a unique MID (message identification).

             1)  R̲e̲f̲e̲r̲e̲n̲c̲e̲ ̲b̲y̲ ̲Q̲E̲L̲

                 Messages in process are stored in items under
                 MMS.  An application can only access a message
                 which it has either received from a queue or
                 created itself.  In the latter case, the message
                 belongs to a queue specified by creator at
                 creation time.  So in any case, a message in
                 process belongs to one or more queues, which
                 are the basis for reference to the message.
                  All message handling functions except Retrieve
                 use QEL as message reference.

             2)  R̲e̲f̲e̲r̲e̲n̲c̲e̲ ̲b̲y̲ ̲M̲I̲D̲

                 Each message is at creation time supplied with
                 a unique message identification, namely the
                 item id generated by MMS.  Messages in Historic
                 Data Base can only be referenced by MID, and
                 only by SAR package in the Retrieve function.

         b)  M̲e̲s̲s̲a̲g̲e̲ ̲V̲i̲e̲w̲

             A message consists of a number of fields, and for
             each application module normally only a subset
             of the fields is of interest when reading and/or
             updating the message.  Certain applications may
             also for ease of use be interested in presenting
             the message fields in a sequence different from
             the stored one.



             For reasons of security and ease of use, each application
             may then have an associated m̲e̲s̲s̲a̲g̲e̲ v̲i̲e̲w̲, defining:

             1)  The fields of a message which may be read by
                 the application.

             2)  The fields of a message which may be updated
                 by the application.

             3)  Optionally, a transformation between stored
                 and delivered field sequence.

             Message view may either be associated directly
             with the application or with a queue.  In the latter
             case, the view will then depend upon the queue
             from which the message was received.

         c)  M̲e̲s̲s̲a̲g̲e̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲B̲l̲o̲c̲k̲

             The M̲essage C̲ontrol B̲lock (MCB) is logically a
             field of the message, containing key information
             about the message, such as:

             1)  Message Type.
             2)  Security Profile
             3)  Time Stamp (TS) Creation
             4)  Message Originator
             5)  Message Transition State, e.g. current application
                 modules having access to the message
             6)  Message Structure Description
             7)  Message Trace Record describing the previous
                 history of the message in terms of statistical
                 information, queues passed etc.

             For efficiency reasons, MCB is kept memory resident
             as long as the message is in process.  So MCB information
             can be obtained and updated by applications without
             disk accesses though still controlled by MMON,
             as the message view includes the fields of MCB
             which may be accessed by an application.



5.8.1.2.3.6 M̲e̲s̲s̲a̲g̲e̲ ̲M̲o̲n̲i̲t̲o̲r̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲

         The functions of MMON will to a large extent be counterparts
         to functions of Message Management System, because
         an MMS function must be invoked by calling a MMON routine.


         It is seen by the function descriptions, that all message
         referencing is done via QEL except for the obvious
         cases.  This implies that the module creating a new
         message or a new version, or retrieving an existing
         message, must identify a local queue where the generated
         QEL can be placed.

         a)  M̲e̲s̲s̲a̲g̲e̲ ̲H̲a̲n̲d̲l̲i̲n̲g̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲

             1)  C̲r̲e̲a̲t̲e̲ ̲M̲e̲s̲s̲a̲g̲e̲

                 Allocates an item for a new message with item
                 attributes as defined.  A QEL is generated
                 and set to a state as if received from specified
                 queue.

                 Input:  Message Attributes
                         Sub-queue Id

                 Output: MID
                         QEL

             2)  C̲r̲e̲a̲t̲e̲ ̲N̲e̲x̲t̲ ̲V̲e̲r̲s̲i̲o̲n̲

                 Generates a new version of an existing message
                 by allocating a new item.  The generated QEL
                 is set in a state as if received from the same
                 queue as the one used as input parameter. 
                 

                 Input:  QEL Referencing Current Version
                 Output: QEL Referencing New Version

             3)  D̲i̲s̲m̲a̲n̲t̲l̲e̲ ̲M̲e̲s̲s̲a̲g̲e̲

                 Terminates all use of a message by the caller.
                  May cause the message to be deleted or moved
                 to Intermediate Storage.  If the message has
                 been checkpointed, the checkpoint may be removed.
                  Calls finally the QMON function Dismantle.

                 Input:  QEL

             4)  S̲e̲n̲d̲ ̲M̲e̲s̲s̲a̲g̲e̲

                 This function sends a message to a number of
                 destination queues and changes message state
                 at the same time.  The send and the new state
                 are checkpointed.  The function may include
                 a dismantle.



                 Input:  QEL
                         Destination Queue List
                         New Message State
                         Dismantle (boolean)

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

                 Check, if the specified application module
                 would be allowed to access the specified message.

                 Input:  QEL
                         Application Module Id

                 Output: Confirmation Code

             6)  G̲e̲t̲ ̲M̲C̲B̲

                 Requests a copy of some fields within MCB.

                 Input:  QEL
                         MCB View

                 Output: MCB Fields

             7)  P̲u̲t̲ ̲M̲C̲B̲

                 Supplies an updated version of some fields
                 within MCB.  May include change of some attributes
                 such as security.

                 Input:  QEL
                         MCB View

             8)  O̲p̲e̲n̲ ̲M̲e̲s̲s̲a̲g̲e̲

                 Includes calling module as a user of the message,
                 thus allowing subsequent message manipulating
                 functions.  A check on security and access
                 rights will be performed before return.  Moreover,
                 a parent notification may take place.

                 Input:  QEL



             9)  C̲l̲o̲s̲e̲ ̲M̲e̲s̲s̲a̲g̲e̲

                 Terminates temporarily the use of a message
                 by caller.  Used instead of dismantle if the
                 caller expects to access the message again
                 later on.

                 Input:  QEL

             10) S̲a̲v̲e̲ ̲M̲e̲s̲s̲a̲g̲e̲

                 Generates a checkpoint containing the current
                 state of the message.

         b)  M̲e̲s̲s̲a̲g̲e̲ ̲M̲a̲n̲i̲p̲u̲l̲a̲t̲i̲o̲n̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲

             1)  B̲y̲t̲e̲ ̲S̲t̲r̲i̲n̲g̲s̲ ̲i̲n̲ ̲F̲i̲e̲l̲d̲s̲

                 Read Bytes in Field
                 Modify Bytes in Field
                 Append Bytes in Field
                 Require that the message has been "opened".

                 Input:  QEL
                         Field Address (Field, Address within
                     
                         field)
                         Buffer List

             2)  R̲e̲a̲d̲ ̲F̲i̲e̲l̲d̲ ̲G̲r̲o̲u̲p̲

                 Reads a group of fields from a message.

                 Input:  QEL
                         Field List
                         Buffer List

         c)  S̲t̲o̲r̲a̲g̲e̲ ̲a̲n̲d̲ ̲R̲e̲t̲r̲i̲e̲v̲a̲l̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲

             Called by Storage and Retrieval Package for transfer
             of messages between storage types.

             1)  S̲t̲o̲r̲e̲ ̲M̲e̲s̲s̲a̲g̲e̲

                 Causes a message to be transferred from Short
                 Term Storage to Intermediate Storage.  The
                 request may be rejected if security profile
                 for message is higher than a preset level.

                 Input:  QEL



             2)  D̲u̲m̲p̲ ̲M̲e̲s̲s̲a̲g̲e̲s̲

                 Transfers a message or a sequence of messages
                 from Intermediate Storage to Long Term Storage.

                 Input:  MID sequence description
                         Volume id

             3)  R̲e̲t̲r̲i̲e̲v̲e̲ ̲M̲e̲s̲s̲a̲g̲e̲

                 Generates a temporary item in Short Term Storage
                 and copies the message into that item.  Generates
                 a queue element and sets it into a state as
                 if received from specified queue.

                 Input:  MID
                         Volume Id
                         Sub-queue Id
                 Output: QEL



5.8.1.2.3.7 S̲e̲c̲u̲r̲i̲t̲y̲ ̲a̲n̲d̲ ̲A̲c̲c̲e̲s̲s̲ ̲C̲o̲n̲t̲r̲o̲l̲

         The functional level of security and access control
         to messages as described in section 4.9 is performed
         by Queue Monitor and Message Monitor of CSF.

         There are four different mechanisms involved:

         -   Security control on message access
         -   Security interrogation and security warning control
         -   Queue access control
         -   Message view control

         a)  S̲e̲c̲u̲r̲i̲t̲y̲ ̲C̲o̲n̲t̲r̲o̲l̲

             Each CAMPS application module will have a s̲e̲c̲u̲r̲i̲t̲y̲
             p̲r̲o̲f̲i̲l̲e̲ associated with it.  The profile is set
             by SSC.

             Also each message will have a security profile,
             set by message originator at message creation time.

             An application module cannot access any part of
             a message, except from certain MCB fields, without
             opening it before accessing.  When the open function
             is called, MMON performs the following check within
             each compartment of security profile:



             Security level of caller …0f…=…0e… security level of message.

             The open call will only be accepted if this check
             is passed together with the one described under
             b) below.

         b)  S̲e̲c̲u̲r̲i̲t̲y̲ ̲I̲n̲t̲e̲r̲r̲o̲g̲a̲t̲i̲o̲n̲ ̲a̲n̲d̲ ̲S̲e̲c̲u̲r̲i̲t̲y̲ ̲W̲a̲r̲n̲i̲n̲g̲

             VDU applications must pass a second check before
             access to a message is granted, namely the security
             interrogation or security warning carried out by
             SSC.  Refer to figure 5.8.1.1.2-6.

             When the terminal process calls the open function
             and the security check in a) is passed, MMON will
             check the message security profile for a possibly
             required security interrogation or security warning.
              If required, a notification will be queued to
             SSC and the reply is awaited.  The reply from SSC
             may be positive or negative and access to the message
             thus granted accordingly.

         c)  Q̲u̲e̲u̲e̲ ̲A̲c̲c̲e̲s̲s̲ ̲C̲o̲n̲t̲r̲o̲l̲

             If the checks under a) and b) allow it, an application
             module may access any message in a queue from which
             the application module can receive.  In order to
             control "who" may see which messages, one can thus
             enforce two controls on queue access:

             1)  Specify for each application module from which
                 queues it may receive.

             2)  Specify for each application module to which
                 queues it may send and for which purposes.

             By these two controls one can effectively limit
             message flow channels within CAMPS to the authorized
             ones, and one can centralize message distribution
             decisions to certain modules such as MDP and THP.



         d)  M̲e̲s̲s̲a̲g̲e̲ ̲V̲i̲e̲w̲ ̲C̲o̲n̲t̲r̲o̲l̲

             Even when an application module has been granted
             access to a message by passing the checks a) -
             c), the message view may be used to limit application
             module capabilities to certain operations on certain
             fields of the message.

         e)  M̲e̲s̲s̲a̲g̲e̲ ̲D̲i̲s̲t̲r̲i̲b̲u̲t̲i̲o̲n̲ ̲S̲e̲c̲u̲r̲i̲t̲y̲ ̲C̲h̲e̲c̲k̲

             Application modules such as MDP and THP may want
             to know, if a destination application would be
             allowed to access a particular message, before
             placing the message in a destination queue.  This
             check can be invoked by calling the Check Security
             function of 5.8.1.2.3.6.a.5).



5.8.1.2.3.8 M̲e̲s̲s̲a̲g̲e̲ ̲M̲o̲n̲i̲t̲o̲r̲ ̲R̲e̲c̲o̲v̲e̲r̲y̲

         Refer to figure 5.8.1.1.2-7

         a)  M̲e̲s̲s̲a̲g̲e̲ ̲C̲h̲e̲c̲k̲p̲o̲i̲n̲t̲s̲

             When an application module issues the Send Multiple
             function, MMON generates a checkpoint by the following
             actions:

             1)  Insert new queue information into MCB
             2)  Insert new message state into MCB
             3)  Insert associated message view into MCB
             4)  Issue Save command to SFM
             5)  Issue Send functions to the specified queues

             The Dismantle function may cause a checkpoint to
             be removed.

         b)  R̲e̲c̲o̲v̲e̲r̲y̲ ̲o̲f̲ ̲M̲e̲s̲s̲a̲g̲e̲s̲

             During system start-up SSC issues initialize command
             to CSF.  The command defines if message recovery
             should be performed.  If so, Message Monitor issues
             a sequence of Restore commands to SFM.  Each Restore
             command returns a checkpointed MCB.  The MCB is
             regenerated in the MCB-area and the queue information
             in MCB is used to insert the message in the appropriate
             queues.



         c)  S̲y̲s̲t̲e̲m̲ ̲C̲l̲o̲s̲e̲

             A Stop command from SSC causes Message Monitor
             to write the total CAMPS system state to disk.
              From now on CSF will not accept a̲n̲y̲ other command
             than initialize.  If the initialize command specifies
             a warm start, the system state will be restored
             from the disk copy.



5.8.1.2.3.9 M̲e̲s̲s̲a̲g̲e̲ ̲M̲o̲n̲i̲t̲o̲r̲ ̲D̲e̲s̲i̲g̲n̲ ̲C̲o̲n̲s̲i̲d̲e̲r̲a̲t̲i̲o̲n̲s̲

         A number of Message Monitor functions are still considered,
         such as:

         a)  Copy parts of a message into another without reading
             it into application module buffers.

         b)  Relations to I/O system.

         c)  The effect of Message Deletion.

         d)  Integrate the Check Security function into Send
             Message in order to avoid racing conditions.

         e)  Save MCB on disk when Message Monitor can foresee
             that it will not be used for some time.

         f)  Clean up after terminal processes when logical
             or physical access state changes.



5.8.1.2.3.10 T̲i̲m̲e̲r̲ ̲M̲o̲n̲i̲t̲o̲r̲

         Timer Monitor contains two groups of functions, namely
         timer event assistance and tools for manipulating current
         time and date.

         a)  T̲i̲m̲e̲r̲ ̲D̲r̲i̲v̲e̲n̲ ̲E̲v̲e̲n̲t̲s̲

             Timer Monitor has a timer facility whereby application
             modules are assisted in scheduling timer driven
             events, that is events that must occur at regular
             intervals or at specific points in time.  This
             is carried out by requesting Timer Monitor to send
             a QEL to a specified queue at the time where the
             event should occur.


             There are two functions available:

             1)  R̲e̲q̲u̲e̲s̲t̲ ̲T̲i̲m̲e̲-̲o̲u̲t̲

                 Requests Timer Monitor to start a time-out
                 period.  When the period has elapsed, an answer
                 is sent back to a specified answer queue. 
                 Refer to figure 5.8.1.1.2-4

                 Input:  Time-out, either in the form of a time
                 
                                   period or an absolute time.
                         Answer queue.
                         Event id, which may be used by the
                     
                                   application to identify the
                                   event waited for.

             2)  C̲a̲n̲c̲e̲l̲ ̲T̲i̲m̲e̲-̲O̲u̲t̲

                 Called if the application regrets a previously
                 requested time-out.

                 Input:  Event id, which must uniquely identify
                                   the event among those referring
                                   to a specific answer queue.

         b)  C̲u̲r̲r̲e̲n̲t̲ ̲T̲i̲m̲e̲

             1)  G̲e̲t̲ ̲T̲i̲m̲e̲

                 Obtains the current date and time with the
                 precision of one second.  The time may be in
                 various formats specified by format parameters.

                 Input:  Format parameter
                 Output: Date and time in specified format

             2)  S̲e̲t̲ ̲T̲i̲m̲e̲

                 Sets current time to a new value.





5.8.1.2.4    T̲r̲a̲c̲e̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲

         Consists of two major parts:

         a)  Trace Procedure used to generate trace records
             during normal processing.

         b)  Trace Print-out used to analyze the stored trace
             records and print results in a readable format.

         c)  T̲r̲a̲c̲e̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲

             TP will be invoked by CAMPS system functions in
             order to produce a trace record of each major event
             in the system.  Examples of such events are:

             1)  Creation of a new message
             2)  Insertion of an element into a queue
             3)  Removal of an element from a queue

             In addition, application modules may want to produce
             trace records at certain points during processing
             of a message.  This may be done by direct invocation
             of TP.

         d)  A trace record will contain the following information:

             1)  Time of occurrence of the traced event
             2)  Identification of the calling subsystem/module
             3)  Function code identifying the system function
                 call producing the trace record, such as "send
                 to queue".
             4)  System function call parameters, such as "destination
                 queue", "queue element" and call location.

             A direct call of TP from a subsystem may in addition
             to 1 - 3 above simply dump register contents and
             perhaps the first N words referenced by a specific
             register, which could for instance point to a message
             control block.

             The trace records produced will be written cyclically
             onto a file on disk.

             As trace recording may result in a considerable
             CPU and disk overhead, the amount of tracing should
             be adjustable.  This is carried out in the following
             way:



             The system functions producing trace records are
             divided into a number of trace groups.  For each
             application module, it is dynamically defined which
             trace groups should be active for that module.
              In addition one or more trace groups may be declared
             inactive on a global level meaning that they will
             never produce trace records, even if an application
             
             module has declared them active.  This mechanism
             is implemented by a bit mask technique.  Each trace
             group corresponds to a bit in the mask.  Each application
             module has a mask defining its active trace groups
             and finally this is a global trace mask.

         e)  T̲r̲a̲c̲e̲ ̲P̲r̲i̲n̲t̲-̲O̲u̲t̲

             An offline utility is available for formatting
             and print out of the trace record file.



5.8.1.3  C̲S̲F̲ ̲C̲o̲n̲t̲r̲o̲l̲



5.8.1.3.1 P̲a̲r̲a̲m̲e̲t̲e̲r̲ ̲C̲o̲n̲t̲r̲o̲l̲

         CSF is controlled by parameters supplied by SSC during
         initialization or set dynamically.



5.8.1.3.2    I̲n̲i̲t̲i̲a̲l̲i̲z̲a̲t̲i̲o̲n̲

         At initialization SSC specifies the start-up situation
         and the associated recovery level.



5.8.1.3.3    E̲r̲r̲o̲r̲ ̲H̲a̲n̲d̲l̲i̲n̲g̲

         CSF has no internal error handling.  Errors are either
         returned to caller or reported to SSC.





5.8.1.4  C̲h̲a̲r̲a̲c̲t̲e̲r̲i̲s̲t̲i̲c̲s̲



5.8.1.4.1    A̲v̲a̲i̲l̲a̲b̲i̲l̲i̲t̲y̲

         Not applicable.



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

         All security relevant CSF data reside in protected
         memory, which is not accessible by application modules
         in user mode.  All CSF functions execute as MON functions
         on the lower system levels.  So they have no access
         to the high level privileged instructions.

         CSF parameter check assures that only authorized CAMPS
         modules are allowed to invoke CSF functions and that
         call parameters fullfil call specifications.



5.8.1.5  D̲e̲s̲i̲g̲n̲ ̲a̲n̲d̲ ̲C̲o̲n̲s̲t̲r̲u̲c̲t̲i̲o̲n̲

         Refer to section 2.5.



5.8.1.6  D̲o̲c̲u̲m̲e̲n̲t̲a̲t̲i̲o̲n̲

         Refer to section 2.6.



5.8.2    E̲n̲v̲i̲r̲o̲n̲m̲e̲n̲t̲



5.8.2.1  S̲t̲a̲n̲d̲a̲r̲d̲ ̲H̲a̲r̲d̲w̲a̲r̲e̲,̲ ̲F̲i̲r̲m̲w̲a̲r̲e̲ ̲a̲n̲d̲ ̲S̲o̲f̲t̲w̲a̲r̲e̲

         CSF executes completely within the active PU.





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

         CSF has no external interfaces.



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

         Not applicable