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

⟦6cbe0c3ab⟧ Wang Wps File

    Length: 51990 (0xcb16)
    Types: Wang Wps File
    Notes: CAMPS SYSTEM FUNCTIONS    
    Names: »1055A «

Derivation

└─⟦5a07e954e⟧ Bits:30006038 8" Wang WCS floppy, CR 0062A
    └─ ⟦this⟧ »1055A « 

WangText

…0e……00……00……00……00…C…0a……00……00…C…0b…C…0f…C…00…C…06…B…0d… …0a… …0f… …05……1f……0a……1f……0f……1f……00……1f……01……1f……02……1e……0a……1e……0d……1e……0e……1e… …1e……05……1e……06……1e……07……1d……0c……1d……0f……1d……00……1d……01……1d……02……1d……86…1                                             …02…           …02…   …02…        

…02…CPS/SDS/002

…02…OKH/810801…02……02…
CAMPS SYSTEM FUNCTIONS
…02……02…CAMPS








                    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̲

         Figure 4.1-1 shows the division of CSF into subpackages.



4.1.1.1  C̲o̲m̲m̲o̲n̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲ ̲O̲v̲e̲r̲v̲i̲e̲w̲

         The Common Functions subpackage is mostly a service
         subpackage for the other CSF subpackages.  There are
         however two function groups directly used by other
         packages:

         a)  S̲h̲a̲r̲e̲d̲ ̲B̲u̲f̲f̲e̲r̲ ̲M̲a̲n̲a̲g̲e̲m̲e̲n̲t̲

             Contains functions for reserving and releasing
             shared buffers and reading and writing their contents.

         b)  S̲u̲b̲p̲r̲o̲c̲e̲s̲s̲ ̲M̲a̲n̲a̲g̲e̲m̲e̲n̲t̲

             Application processes can define current subprocess
             and by a privileged function change access rights
             of a subprocess.

         The two other function groups contain internal functions
         only.  They are:

         c)  List and Chain Manipulation

         d)  Control Block Management.

         e)  Report and Log Generation.


















































     Fig. 4.1-1…01…CSF SUBPACKAGES AND COMMON FUNCTIONS


4.1.1.2  Q̲u̲e̲u̲e̲ ̲M̲o̲n̲i̲t̲o̲r̲ ̲O̲v̲e̲r̲v̲i̲e̲w̲



4.1.1.2.1    Q̲u̲e̲u̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲

         A queue is a doubly linked list of queue elements.
          A queue always belongs to one main queue and is then
         called a subqueue within the main queue.

         The bunching of queues into a main queue has the following
         purposes:

         a)  The main queue is a priority queue with respect
             to the Receive First function.  Subqueues are assigned
             different priorities within the main queue, as
             shown on figure 4.1.1.2-1.

         b)  Queue Length Threshold is assigned to main queue
             and is thus compared with the sum of subqueue lengths.

         c)  Subprocesses are assigned access rights to main
             queues, and have thus the same rights to all subqueues
             within a main queue.

         d)  Queue profiles are assigned to main queues.  Thus
             all subqueues within a main queue have the same
             queue profile.



4.1.1.2.2    Q̲u̲e̲u̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲i̲n̲g̲

         The term Queue will be used in the following to denote
         a Main Queue or a Subqueue.

         A queue is referenced by a LONG integer:

         MSP:    Main Queue Reference
         LSP:    Subqueue index

         Subqueue index is the relative number of the subqueue
         within the main queue.  Index value one denotes the
         highest priority subqueue.  Index value zero is used
         to denote the main queue itself.



         Main queues are numbered by Main Queue Index from one
         to NUMBER OF MAIN QUEUES.



4.1.1.2.2.1  Q̲u̲e̲u̲e̲ ̲C̲a̲p̲a̲b̲i̲l̲i̲t̲i̲e̲s̲

         Queue Capabilities are used to control access by subprocesses
         to queues.

         A queue capability consists of a main queue index and
         a function mask. The function mask contains a bit for
         each of the QMON functions which shall be controlled
         by the capability mechanism. The capability allows
         the specified functions to be performed on the specified
         main queue and its subqueues.

         A subprocess can be g̲l̲o̲b̲a̲l̲l̲y̲ ̲c̲o̲n̲t̲r̲o̲l̲l̲e̲d̲ or c̲a̲p̲a̲b̲i̲l̲i̲t̲y̲
         ̲c̲o̲n̲t̲r̲o̲l̲l̲e̲d̲.

         A globally controlled subprocess has access to all
         queues, and possesses a global function mask determining
         the functions which it may perform on those queues.
         A globally controlled subprocess uses main queue references
         in the form of Main Queue Index.

         A capability controlled subprocess possesses a c̲a̲p̲a̲b̲i̲l̲i̲t̲y̲
         ̲a̲r̲r̲a̲y̲ containing one or more queue capabilties. The
         subprocess has only access to a queue if it is represented
         by a capability in the capability arrayt of the subprocess.
         A capability controlled subprocess uses main queue
         references in the form of Capability Index, which is
         the index of a capability in its own capability array.

         Figure 4.1.1.2-2 illustrates the capability mechanism.



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

         A QEL serves as a reference to a piece of information
         and allows that information to be inserted into one
         queue, or in certain cases into several queues.



         The information referenced by the QEL may either be
         contained in the QEL itself, or it may be contained
         in an o̲b̲j̲e̲c̲t̲ referenced by the QEL.

         There are two types of objects:

         -   Views, managed by MMON

         -   Shared Buffers, managed by CSF Common Functions.

         The subpackage managing an object referenced by a QEL
         is called the o̲b̲j̲e̲c̲t̲ ̲m̲a̲n̲a̲g̲e̲r̲ associated with the QEL.

         The o̲b̲j̲e̲c̲t̲ ̲t̲y̲p̲e̲ of the QEL specifies the type of information
         referenced. There are four different types:

         -   View

         -   Shared Buffer

         -   Timeout

         -   Information Element.

         The two latter types are s̲e̲l̲f̲-̲c̲o̲n̲t̲a̲i̲n̲e̲d̲, as the QEL
         contains all referenced information.



4.1.1.2.3.1  Q̲E̲L̲ ̲C̲r̲e̲a̲t̲i̲o̲n̲ ̲a̲n̲d̲ ̲D̲e̲l̲e̲t̲i̲o̲n̲

         A QEL will always be in one of three different states:

         -   Free.
             The QEL is not in use. It is then in the pool of
             free QELs.

         -   Queued.
             The QEL is in some queue and has not been received
             yet.

         -   Owned.
             The QEL has been received from a queue and is then
             available for the receiving subprocess.

         Figure 4.1.1.2-5 shows the states and the transitions
         between them.



         A QEL comes into use either by object creation or by
         the QMON send function:

             a)  Object Creation.

                 Whenever MMON creates a new view, or CSF Common
                 Function reserves a shared buffer, a QEL is
                 used to reference the new object. The QEL is
                 set in the owned state, as if it was received
                 from a queue specified in the object creation
                 function call.

             b)  Send.

                 The QMON send function creates a QEL and puts
                 it into a specified queue. The input parameters
                 to send depend upon object type:

                 1)   A QEL referencing a view or a shared buffer
                     is sent by specifying another QEL referencing
                     the same object.

                 2)  A timeout is sent by means of Send Timeout,
                     which is only available to CSF Timer Monitor.

                 3)  An Information Element is sent when no
                     QEL of type view or shared buffer is specified.

         A QEL becomes free again when dismantled by call of
         an object type dependent function:

         -   A view is dismantled by the MMON function Dismantle
             View.

         -   A shared buffer is dismantled by the CSF Common
             Function call Release Buffer.

         -   A self-contained QEL is dismantled by the QMON
             function Dismantle.





4.1.1.2.3.2  Q̲u̲e̲u̲e̲ ̲E̲l̲e̲m̲e̲n̲t̲ ̲O̲w̲n̲e̲r̲s̲h̲i̲p̲

         A used queue element will always be in exactly one
         queue.  When it is "received" from a queue, it is not
         taken out of the queue, but merely marked as currently
         reserved by the subprocess having received the element.
          This mark is done in the o̲w̲n̲e̲r̲ field of the queue
         element, and the subprocess is said to be the current
         owner of the element.

         When a subprocess has ownership of a queue element,
         it may use it for the following purposes:

         -   Use it as a reference to the object (e.g. view)
             that the queue element references.

         -   R̲e̲t̲u̲r̲n̲ it to the queue

         -   S̲e̲n̲d̲ it to another queue

         -   D̲i̲s̲m̲a̲n̲t̲l̲e̲ it, meaning that the queue element and
             possibly the corresponding object is destroyed.

         When a queue element has been received, the queue length
         is reduced by one.

         If a queue element has a profile higher than that of
         the subprocess executing Receive (ref. figure 2.2.2.6-3),
         this subprocess is still considered o̲w̲n̲e̲r̲ of the queue
         element.  It may however not use the element as a reference,
         though it can still perform the functions Return, Send
         or Dismantle.

         The PC field of QEL contains the result of the profile
         check.



4.1.1.2.3.3  V̲i̲e̲w̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲I̲n̲f̲o̲r̲m̲a̲t̲i̲o̲n̲

         QELs referencing views contain a field called View
         Control Information. The contents of the field are
         specified as a parameter to the Send function. It contains
         the following subfields:



         -   Application Profile
             Bits 30-31 of the view queue profile, cf 2.2.2.6.2.

         -   Checkpoint Status.
             Specifies whether the QEL shall be included in
             checkpoint of the view.

         -   Write Access.
             Specifies whether the QEL allows write access to
             the referenced view.

         The View Control Information is used by MMON.



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

         The function request mechanism allows a subprocess
         to send a request QEL to some queue and specify an
         answer queue to which a reply can be sent.

         QMON will check that the sender of the function request
         has receive capability to the answer queue.

         The request QEL is marked specially as such and the
         answer queue will be recorded in the QEL.  The Send
         Reply function will automatically send the reply to
         the answer queue.

         The mechanism is shown on figure 4.1.1.2-3.



4.1.1.2.5    Q̲u̲e̲u̲e̲ ̲B̲l̲o̲c̲k̲i̲n̲g̲

         Blocking of a queue means that it is no longer allowed
         to send to the queue while it is still possible to
         receive from it.

         Blocking can be done on a subqueue or a main queue.
          Blocking a main queue results in blocking all its
         subqueues.





4.1.1.2.6    W̲a̲i̲t̲i̲n̲g̲ ̲o̲n̲ ̲Q̲u̲e̲u̲e̲s̲

         The Queue Monitor function Receive First QEL may cause
         the calling process to be suspended, if the referenced
         queue (main queue or subqueue) is empty.  The wait
         parameter in the Receive First function call specifies
         QMON shall wait until a QEL is available or whether
         it shall return with an indication that the referenced
         queue was empty.

         If wait parameter has the value true and the referenced
         queue is empty, the calling process will eventually
         be suspended in System Call Monitor by waiting for
         the QMON synchronization element associated with the
         process.  (Ref. section 2.2.1.6).

         The Receive First QEL is the only QMON function which
         can cause the calling process to be suspended.

         Each time QMON sends or returns a QEL to an empty queue,
         it may signal a number of synchronization elements
         in order to activate processes waiting for the queue.

         Each main queue has a Process Count specifying the
         number of processes which are allowed to wait for elements
         in the queue.  If process count is zero, it is not
         possible for any process to wait for the queue.  Thus,
         a Receive First QEL with wait parameter equal to true
         is not allowed.



















































              Fig. 4.1.1.2-1…01…QUEUE STRUCTURE

















































    Fig. 4.1.1.2-2…01…QMON REFERENCE AND CHECK MECHANISM

















































   Fig. 4.1.1.2-3…01…QUEUE MONITOR REQUEST-REPLY MECHANISM


4.1.1.3  T̲i̲m̲e̲r̲ ̲M̲o̲n̲i̲t̲o̲r̲ ̲O̲v̲e̲r̲v̲i̲e̲w̲

         Timer Monitor has two groups of functions:

         a)  Manipulate Current Time
         b)  Manage Timeout Events

         Manipulation of current time consists of reading the
         time in required formats and converting between different
         formats.  The available formats are listed in section
         4.1.6.2.3.

         Setting current time is a privileged function.  It
         changes the value of system time maintained by the
         KERNEL RTC module.

         Timer driven events are generated by means of the function
         call Request Timeout to Timer Monitor.  When the timeout
         occurs, it is signalled to the requesting process by
         sending a queue element to an answer queue specified
         in the Request Timeout call.  The mechanism is somewhat
         similar to a QMON function request.  It is shown on
         figure 4.1.1.3-1.

         There are two kinds of timeout, single timeout and
         periodic timeout.  A single timeout will be delivered
         only once, while a periodic timeout will be delivered
         at regular intervals.

         The Timeout Specification defines when the timeout
         shall occur.  For both timeout kinds it can either
         be specified as an absolute time of day or it can be
         an elapsed time between 0 and 24 hours from the time
         of calling the request timeout function.  The specified
         time interval can not be smaller than a second.

         Timer Monitor can only manage a limited number of pending
         timeout requests.  They are distributed among processes
         so that each process has a predefined timeout request
         claim.  If a process has at a given time used up all
         its available timeout requests, further requests will
         be rejected.  For technical reasons this is not done
         by a return parameter in the Request Timeout function
         call.  Instead a QEL is sent to the answer queue with
         an indication of the error.



         A timeout request can be cancelled by calling the function
         Cancel Timeout, identifying a previously issued timeout
         request.  If the timeout has already been sent to the
         answer queue, Cancel Timeout will have no effect.



4.1.1.4  M̲e̲s̲s̲a̲g̲e̲ ̲M̲o̲n̲i̲t̲o̲r̲ ̲O̲v̲e̲r̲v̲i̲e̲w̲

         An overview of Message Monitor Functions can be found
         in the sections 2.2.1.4, 2.2.2.2, and 2.2.6.



4.1.1.5  C̲o̲r̲o̲u̲t̲i̲n̲e̲ ̲M̲o̲n̲i̲t̲o̲r̲ ̲O̲v̲e̲r̲v̲i̲e̲w̲

         An overview of Coroutine Monitor can be found in section
         2.2.1.5.



4.1.1.6  S̲y̲s̲t̲e̲m̲ ̲C̲a̲l̲l̲ ̲M̲o̲n̲i̲t̲o̲r̲ ̲O̲v̲e̲r̲v̲i̲e̲w̲

         An overview of System Call Monitor can be found in
         section 2.2.1.6.

















































          Fig. 4.1.1.3-1…01…TIMER MONITOR OVERVIEW


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

         CSF is implemented using the following software components:

         a)  Two shared procedures CMON and TIME executed in
             user mode.  They contain the coroutine monitor
             functions and the Read Time and Convert Time function
             respectively.

         b)  A monitor procedure CSF, executed at System Level
             8.  It contains those CSF functions which do not
             contain waiting points.

         c)  A monitor procedure SCM, executed at system level
             8.  It contains the System Call Monitor functions
             and those CSF functions containing waiting points
             for the calling process.

         d)  A process CSFPROC.  It contains those functions
             which are most conveniently executed by a service
             process.  It is subdivided into a number of coroutines.

         In the diagram on figure 4.1.2-1, the following terms
         are used:

         -   CSF procedure means a procedure called by the monitor
             procedure CSF, mentioned in b) above.

         -   SCM procedure means a procedure called by the monitor
             procedure SCM, mentioned in c) above.

         -   Internal procedure means a procedure which may
             be called from a CSF procedure or an SCM procedure.

         -   Coroutine means a coroutine within the process
             CSFPROC.

         This general structure is shown on figure 4.1.2-1.

         The allocation of functions to software components
         is shown in figure 4.1.2-2.



         CSF is subdivided into the following subpackages:

         -   COMMON FUNCTIONS
         -   QUEUE MONITOR
         -   TIMER MONITOR
         -   MESSAGE MONITOR
         -   SYSTEM CALL MONITOR
         -   COROUTINE MONITOR


















































       Fig. 4.1.2-1…01…GENERAL CSF SOFTWARE STRUCTURE

















































 Fig. 4.1.2-2…01…FUNCTION ALLOCATION TO SOFTWARE COMPONENTS


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̲

         Figures 4.1.3-1, -2 and -3 show the control flow within
         CSF.

         Each of the monitor procedures CSF and SCM are called
         with a Function Code parameter.  This function code
         consists of two parts:

         -   Subpackage Identification
         -   Subpackage Function

         The CSF and SCM monitor procedures use Subpackage Identification
         to select the subpackage, while Subpackage Function
         is used by the Subpackage itself.



4.1.3.1  E̲x̲c̲l̲u̲s̲i̲v̲e̲ ̲A̲c̲c̲e̲s̲s̲ ̲t̲o̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲D̲a̲t̲a̲

         The CSF Data consists of two parts.  One part is shared
         between all processes while the other part has a separate
         incarnation for each process.  Those CSF and SCM procedures
         accessing the shared data part shall ensure exclusive
         access by disabling interrupts and locking a hardware
         semaphore.

         The functions requiring exclusive access to the shared
         data part are:

         -   Subprocess Management functions, see 4.2.1.1.1.

         -   Buffer and Control Block Management functions,
             see 4.2.1.1.2.

         -   Queue Monitor functions, see 4.2.2.

         -   Message Monitor functions, see 4.2.4.





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

         Figure 4.1.3-3 shows that the communication scheme
         between monitor procedures and CSF process contain
         potential deadlocks.  These shall be avoided in the
         following way:

         a)  CSF process shall be given a process priority higher
             than all other processes calling CSF monitor procedures.

         b)  CSF process shall supply the necessary number of
             communication resources for the communication to
             its synchronization elements.

         c)  There shall be defined a maximum number of communications
             to CSF process which may take place in one CSF
             or SCM procedure.  The necessary upper limit in
             b) can then be determined.




















































     Fig. 4.1.3.-1…01…MONITOR PROCEDURE CSF CONTROL FLOW
















































     Fig. 4.1.3-2…01…MONITOR PROCEDURE SCM CONTROL FLOW
















































          Fig. 4.1.3-3…01…CSF PROCESS CONTROL FLOW


4.1.4    P̲a̲c̲k̲a̲g̲e̲ ̲D̲a̲t̲a̲

         CSF Data are divided into two parts as shown on figure
         4.1.4-1:

         a)  Data shared among processes.
         b)  Local Data existing in an incarnation for each
             process.

         The CSF package data are allocated as follows:

         a)  Package Data in Shared Area.

             -   Queue Element Array

         b)  Package Date in Local Area.

             -   System Operation Control Block Array
             -   Subprocess Record.



















































Fig. 4.1.4-1…01…LOGICAL DATA SPACE LAYOUT FOR CAMPS APPLICATION PROCESSES


4.1.5    C̲o̲m̲m̲o̲n̲ ̲D̲a̲t̲a̲

         CSF has two kinds of data common with other packages:

         a)  Parameter Blocks used by applications in calls
             of CSF functions.

         b)  Information Blocks exchanged with Message Management
             System and SSC.

         The data formats are described in subpackage specifications.



4.1.6    I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲



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

         Not Applicable.



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



4.1.6.2.1    C̲o̲m̲m̲o̲n̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲

         Table 4.1.6.2.1-1 shows the interface specification
         for those common functions which can be called by application
         processes.  They are all CSF procedures (ref. section
         4.1.2).

         The function Change Subprocess Attributes is privileged.




















































       Table 4.1.6.2.1-1…01…COMMON FUNCTION INTERFACES


4.1.6.2.2    Q̲M̲O̲N̲

         QMON does not access other packages but all application
         packages access QMON. The functions performed by QMON
         are:

         -   Receive First QEL
         -   Receive Next QEL
         -   Return
         -   Dismantle
         -   Send
         -   Send Request
         -   Send Reply
         -   Send Timeout
         -   Set Profile
         -   Block Queue
         -   Unblock Queue
         -   Set Capability
         -   Set Queue Threshold
         -   Get Queue Attributes
         -   Get Queue Length
         -   Get QEL Attributes
         -   Initialize Queues
         -   Initiate Capability Array

         The functions listed here are the functions relevant
         to other packages. Receive First QEL is an SCM procedure
         while the others are CSF procedures, cf section 4.1.2.

         Application modules are divided into groups characterized
         by having the same access rights and having permission
         to use the same functions. These groups are called
         Subprocesses.

         To control access rights to Qs and QELs is used a profile;
         there exists a profile for each subprocess, queue and
         View. A little part of the profile is contained in
         QEL and may be changed by "Send" function. 
         A queue is identified by the reference to it. The reference
         must be one of these types.

         -   Main Queue Reference (Main Q, NIL)
         -   Subqueue Reference (Main Q, Sub queue index)

         A Queue Reference is a Main Queue Reference or a Subqueue
         Reference.



         Queue referencing is described in section 4.1.1.2.2.

         If the view referenced by a QEL is to be checkpointed
         it must be specified in the input parameters for "Send".
         Then it is automatically checkpointed by the next "Save"
         command where the QEL generated by "Send" is involved.

         The QELs contain a three word info field. This field
         is updated by "Send" with the info specified by input
         parameters. The info field may be read by using the
         "Get QEL Attributes" function.

         The QELs are time stamped when they are sent to a queue.
         The time stamp is current time read from Real Time
         Clock Module in a 2 word millisecond format.

         A QEL may be received from a Main queue or a Sub queue.
         When it is received from a queue it is marked as owned
         by the subprocess which performed the "Receive". When
         a Subprocess owns a QEL it may perform Send, Return,
         Dismantle or Get QEL attributes functions on it or
         it may use it as reference to the object referenced
         by the QEL. Only the subprocess permitted functions
         may be performed. 

         There exists a facility which allows a subprocess to
         send a QEL to a queue, requesting an answer to be sent
         to another queue. This facility is started by using
         the "Send Function Request" function. This function
         requires an answer queue as input parameter in addition
         to the normal send input parameters. The answer subprocess
         will then later on receive the QEL, perform requested
         function and return the answer to requesting subprocess
         by using the function "Send Reply" which must have
         the received QEL as input instead of a destination
         queue.

         In order to minimize the effect of a failure in one
         process, each subprocess is only allowed to be owner
         of a specified number of QELs at a given time. This
         is a system generation parameter.





4.1.6.2.2.1  R̲e̲c̲e̲i̲v̲e̲ ̲F̲i̲r̲s̲t̲ ̲Q̲E̲L̲

         The first QEL in a sub queue or a main queue is marked
         as owned by calling subprocess and queue length is
         decremented. If the queue is empty caller may wait
         until a QEL arrives. If Wait is true the caller waits,
         otherwise a completion code telling that the queue
         is empty is returned.

         The caller may receive QELs with all profiles but if
         the QEL profile exceeds subprocess profile it may have
         influence on the functions the caller is permitted
         to perform at QELs received from actual Q, e.g. a right
         to use a QEL as reference to an object is withdrawn.
         

         This function may be used on Main Qs and Sub Qs. 

         Input:  Q̲I̲D̲

                 -   Q reference

                 W̲a̲i̲t̲

                 -   Boolean

         Output: Q̲E̲L̲

                 -   QEL reference

                 S̲u̲b̲q̲u̲e̲u̲e̲ ̲I̲n̲d̲e̲x̲

                 C̲C̲

                 -Function Complete
                 -QEL has higher profile
                 -No capability
                 -Queue is empty
                 -QEL claim exceeded





4.1.6.2.2.2  R̲e̲c̲e̲i̲v̲e̲ ̲N̲e̲x̲t̲ ̲Q̲E̲L̲

         The QEL next to a QEL owned by caller is marked as
         owned by caller and the queue length is decreased.
         If there are no more QELs in the queue the completion
         code tells it.

         The caller may receive QELs with all profiles but if
         the QEL profile exceeds subprocess profile it may have
         influence on the functions the caller is permitted
         to perform at QELs received from actual queue. e.g.
         a right to use a QEL as reference to an object is withdrawn.



         Input:  Q̲E̲L̲

                 -   Reference to a QEL owned by calling subprocess.

         Output: QEL

                 -   Q̲E̲L̲ reference

                 C̲C̲

                 -   Function Complete
                 -   QEL has higher profile
                 -   Input QEL not owned by caller
                 -   Queue is empty
                 -   QEL claim exceeded




4.1.6.2.2.3 R̲e̲t̲u̲r̲n̲

         Owner reference in a QEL owned by calling Subprocess
         is cleared and Qlength is incremented.

         The QEL is put back at the same place in the same queue
         where it was received from.

         Input: Q̲E̲L̲

                 -   Reference to a QEL owned by caller

         Output: C̲C̲

                 -   Function Complete
                 -   QEL not owned by caller
                 -   Function not allowed



4.1.6.2.2.4 D̲i̲s̲m̲a̲n̲t̲l̲e̲

         A QEL owned by calling Subprocess is returned to the
         list of free QELs. A QEL referring to an object can
         not be dismantled by QMON but must be dismantled by
         calling the server of the object referred, e.g. MMON
         or Shared Buffer Management.

         The dismantled QEL reference must not be used after
         dismantle thus it may be cleared or used to reference
         an other object.

         Input: QEL

                 -   Reference to a QEL owned by caller

         Output:CC

                 -   Function Complete
                 -   QEL not owned by caller
                 -   Function not allowed





4.1.6.2.2.5 S̲e̲n̲d̲

         Sends a QEL to destination queue. If a QEL owned by
         caller is specified a copy of this is sent.If no QEL
         is specified a new QEL is generated and sent. Before
         the QEL is sent the following input parameters are
         filled in. The input parameters filled in are

         -   View Control Information
         -   Info

         View Control Information is only relevant for QEL's
         referencing views.

         Input:  Q̲E̲L̲

                 Reference to an owned QEL or Nil reference

                 D̲e̲s̲t̲.̲ ̲Q̲I̲D̲

                 Destination QID of the type Sub queue ref.

                 V̲i̲e̲w̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲I̲n̲f̲o̲r̲m̲a̲t̲i̲o̲n̲

                 I̲n̲f̲o̲

                 Three word information specified by caller

         Output: C̲C̲

                 -   Function Complete
                 -   QEL has higher profile than dest. queue.
                 -   Q not owned by caller
                 -   No capability
                 -   Function not allowed

                 P̲r̲o̲f̲i̲l̲e̲ ̲M̲a̲s̲k̲

                 If the send was rejected because of a profile
                 check, this mask shows which profile fields
                 did not pass the check.





4.1.6.2.2.6 S̲e̲n̲d̲ ̲R̲e̲q̲u̲e̲s̲t̲

         Sends a QEL to destination queue. If a QEL owned by
         caller is specified a copy of this is sent. If no QEL
         is specified a new QEL is generated and sent. Before
         the QEL is sent the following input parameters are
         filled in. The input parameters filled in are 

             -   View Control Information
             -   Info
             -   Answer Queue

         The answer Queue is used when an other module performs
         "Send Reply" function to send an answer to the requesting
         module.

         Input:  Q̲E̲L̲

                 Reference to an owned QEL or Nil reference

                 D̲e̲s̲t̲.̲Q̲ ̲I̲D̲

                 Destination QID of the type Sub queue ref.

                 V̲i̲e̲w̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲I̲n̲f̲o̲r̲m̲a̲t̲i̲o̲n̲

                 I̲n̲f̲o̲

                 Three word information specified by caller

                 A̲n̲s̲w̲e̲r̲ ̲Q̲I̲D̲

                 The Queue where answer at the request is to
                 be sent to.  QID of the type Subqueue ref.

         Output: CC

                 -   Function Complete
                 -   QEL has higher profile than dest.Q
                 -   QEL not owned by caller
                 -   No capability
                 -   Function not allowed

                 P̲r̲o̲f̲i̲l̲e̲ ̲M̲a̲s̲k̲

                 As for send.




4.1.6.2.2.7  S̲e̲n̲d̲ ̲R̲e̲p̲l̲y̲

         Sends a QEL to answer queue in the reply QEL.

         If the QEL to be sent is owned by caller a copy of
         it is sent. The fields containing the answer queue
         is not copied.

         If no QEL is specified a new QEL is generated and sent.

         Before the QEL is sent some of the input parameters
         are filled in. The input parameters filled in are

             -   View Control Information
             -   Info

         Input:  Q̲E̲L̲

                 Reference to QEL owned or Nil. An owned QEL
                 may be the same as dest. QEL.

                 D̲e̲s̲t̲.̲Q̲E̲L̲

                 The QEL by which the request was received.
                 The dest. QEL must be owned by caller

                 V̲i̲e̲w̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲I̲n̲f̲o̲r̲m̲a̲t̲i̲o̲n̲

                 I̲n̲f̲o̲

                 Three word information specified by caller

         Output: C̲C̲

                 -   Function Complete
                 -   QEL profile not contained in destination
                     queue profile
                 -   QEL not owned by caller
                 -   No answer queue in QEL
                 -   Function not allowed

                 P̲r̲o̲f̲i̲l̲e̲ ̲M̲a̲s̲k̲

                 As for send.





4.1.6.2.2.8  S̲e̲n̲d̲ ̲T̲i̲m̲e̲o̲u̲t̲

         This function differs from Send only in two respects:

         a)  Only CSF process is allowed to use the function

         b)  The QEL object type is set to "timeout".



4.1.6.2.2.10 S̲e̲t̲ ̲P̲r̲o̲f̲i̲l̲e̲

         The profile of a Main queue is set. If the new profile
         does not contain the old profile, the profiles of all
         QELs in the queue are compared with the new value and
         the QELs with a profile not contained are moved to
         an alternative Sub queue specified by caller.

         Only SSC is allowed to use this function.

         Input:  Q̲I̲D̲

                 Main queue reference

                 P̲r̲o̲f̲i̲l̲e̲

                 The new profile value

                 A̲l̲t̲.̲Q̲I̲D̲

                 Sub queue reference to the alternative queue
                 where QELs with too high profile are moved.

         Output: C̲C̲

                 -   Function Complete
                 -   Alternative queue profile error
                 -   Function not allowed





4.1.6.2.2.11 B̲l̲o̲c̲k̲ ̲Q̲u̲e̲u̲e̲

         Blocks the specified queue. If it is a main queue,
         all subqueues are blocked.

         The function is privileged.

         Input:  Queue ID
         Output: Completion Code



4.1.6.2.2.12 U̲n̲b̲l̲o̲c̲k̲ ̲Q̲u̲e̲u̲e̲

         Cancels a previous blocking. If a main queue is specified,
         all subqueues are unblocked.

         The function is privileged.

         Input:  Queue ID
         Output: Completion Code



4.1.6.2.2.13 S̲e̲t̲ ̲C̲a̲p̲a̲b̲i̲l̲i̲t̲i̲e̲s̲

         The Main queue referred by a queue capability is changed.

         Only SSC is allowed to use this function.

         Input:  S̲u̲b̲p̲r̲o̲c̲e̲s̲s̲ ̲I̲D̲

                 The identification of the Subprocess using
                 actual capability array.

                 Q̲ ̲C̲a̲p̲.̲

                 Capability index

                 M̲a̲i̲n̲ ̲Q̲

                 New Main queue reference



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

                 New functions the Subprocess is allowed to
                 perform on this queue.

         Output: C̲C̲

                 -   Function Complete
                 -   Capability Index Error



4.1.6.2.2.14 G̲e̲t̲ ̲Q̲u̲e̲u̲e̲ ̲A̲t̲t̲r̲i̲b̲u̲t̲e̲s̲

         The attributes of a queue are delivered to caller

         Input:  QID 

                 -   Queue reference

                 Output addr.

                 -   Address to output buffer

         Output: Queue attributes

                 -   Profile
                 -   Threshold

                 CC

                 -   Function Complete
                 -   No Capability
                 -   Output addr. unavailable



4.1.6.2.2.15  G̲e̲t̲ ̲Q̲u̲e̲u̲e̲ ̲L̲e̲n̲g̲t̲h̲

         Counts the number of QELs fulfilling a specified profile
         condition.

         The condition is specified by a Profile Mask. A QEL
         is included in the count if its qprofile contains any
         of the bits in Profile Mask.



         Input   Queue Reference

                 Profile Mask

         Output  Q length


                 CC

                 -   Function Complete
                 -   No Capability
                 -   Output address unavailable



4.1.6.2.2.16  G̲e̲t̲ ̲Q̲E̲L̲ ̲A̲t̲t̲r̲i̲b̲u̲t̲e̲s̲

         The attributes of a QEL are delivered to caller

         Input:  QEL 

                 -   Reference to a QEL

                 Output addr.

                 -   Address of output buffer

         Output: QEL Attributes

                 -   Time Stamp
                 -   View Control Information
                 -   Profile Check Status
                 -   Object type
                 -   Owner
                 -   Information field

                 CC

                 -   Function Complete



4.1.6.2.2.17 I̲n̲i̲t̲i̲a̲l̲i̲z̲e̲ ̲Q̲u̲e̲u̲e̲s̲

         The queue descriptions are initiated. Only SSC is allowed
         to use this function.



         Input:  Init data

         Output: CC

                 -   Function Complete



4.1.6.2.2.18  S̲e̲t̲ ̲Q̲u̲e̲u̲e̲ ̲T̲h̲r̲e̲s̲h̲o̲l̲d̲

         Defines the threshold values for a main queue.

         Input:  Main Queue Reference
                 Threshold values

         Output: Completion Code.



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

         Timer Monitor interfaces to all packages by supplying
         them with tools to send and convert time and by maintaining
         Time Requests.

         The Read Time and Convert Time functions are part of
         the TIME procedures, while Request Timeout, Cancel
         Timeout and Set Time are CSF procedures, cf section
         4.1.2. Set Time is privileged.

         The time formats known by Timer Monitor are



         RTC.:       The 48 Bit milliseconds format read by
                     the DAMOS Real Time Clock Module


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

                     Milliseconds
                      ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
                     ̲ ̲ ̲ ̲ ̲ 


                     6 bytes integer giving milliseconds since
                     "specified time"

         INTM:       An 8 byte integer string specifying year,
                     month, day, hour, minute, second, millisecond.
                     Millisecond is specified in two bytes,
                     the others in one byte each . Year is giving
                     the two last figures in the year.
          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
         ̲ ̲ ̲ ̲ ̲ ̲

          Year  Month  Day  Hour  Minute  Second  Millisecond
          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
         ̲ ̲ ̲ ̲ ̲ ̲

          0-99  1-12  1-31  0-23  0-59    0-59      0-999

         INTS:

         A 6 byte integer string identical to INTM except that
         milliseconds are missing.

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

          Year  Month  Day  Hour  Minute  Second 
          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲          
              

          0-99  1-12  1-31  0-23  0-59    0-59   

         RQT:

         A 4 byte integer copied from the 4 least significant
         bytes in the RTC format.

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

           Milliseconds
          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

          0- 4.10…0e…9…0f… (0-45 days)



         HM:

         A 2 byte integer string giving hours and minutes since
         midnight.

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

          Hour     Minute
          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

         0-23      0-59

         MIN:

         A 2 byte integer giving minutes since midnight.

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

          Minutes
          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

          0 - 1439

         JUL:

         A 2 byte integer giving days since new year.

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

            Days
          ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

           1-366



4.1.6.2.3.1 R̲e̲a̲d̲ ̲T̲i̲m̲e̲

         The time is read and delivered to caller in specified
         format. If the whole time format is not wanted this
         is specified by a read mask. The output is written
         at the location specified by caller.

         Input:  Time Format



         Output: Time

                 Time is written as a part of RIC or INTM formats
                 or in RTC, INTM or RQT formats as a whole.

                 CC

                 -   Complete
                 -   Fail



4.1.6.2.3.2 C̲o̲n̲v̲e̲r̲t̲ ̲T̲i̲m̲e̲ ̲t̲o̲ ̲A̲S̲C̲I̲I̲

         One or two bytes are converted to ASCII and written
         at the location specified by caller:

         Input:  T̲i̲m̲e̲

                 One byte specifying Year, Month, Day, Hour,
                 Minute, or Second. Two bytes specifying Julian
                 Day.

                 T̲y̲p̲e̲

                 One byte specifying conversion type

         Output: T̲i̲m̲e̲

                 Two or three ASCII characters

                 CC

                 -   Complete
                 -   Input out of range
                 -   Unknown type

         If input is year, day, hour, minute, or second the
         input must not exceed 99. The associated output is
         two ASCII characters defining the two figures in input.



         If input is month it must not exceed 12. The associated
         output is three ASCII characters defining the three
         letter abbreviation for the month.

         If input is Julian day it must not exceed 366.

         The associated output is three ASCII characters defining
         the three figures in input.



4.1.6.2.3.3 C̲o̲n̲v̲e̲r̲t̲ ̲T̲i̲m̲e̲ ̲F̲o̲r̲m̲a̲t̲

         One time format is converted to another. The possible
         conversions are

         HM to MIN

         MIN to HM

         (Month, Day) to JUL

         JUL to (month, day)

         Input:  T̲i̲m̲e̲

                 One word time format of format MIN, HM, JUL,
                 or (Month, Day)

                 T̲y̲p̲e̲

                 Specifying format type

         Output: T̲i̲m̲e̲

                 In format MIN, HM, JUL, or (Month, Day)

                 C̲C̲

                 -   Complete
                 -   Input out of range
                 -   Unknown fomat

         The allowed values for input are specified by the formats.





4.1.6.2.3.4 S̲e̲t̲ ̲T̲i̲m̲e̲

         Sets the time in DAMOS Real Time Clock Module to the
         time specified by SSC. The time must be in the INTS
         format.

         The function is privileged.

         Input:  T̲i̲m̲e̲

                 Current time in INTS format

         Output: C̲C̲

                 -   Complete
                 -   Unknown Time Format



4.1.6.2.3.5 R̲e̲q̲u̲e̲s̲t̲ ̲T̲i̲m̲e̲ ̲O̲u̲t̲

         A time out is requested by calling the procedure "Request
         Time Out" with the actual input parameter.

         When the time specified has passed a QEL is sent to
         specified queue.

         The QEL contains the current time and event ID in info
         field.

         The time out may be requested to be sent once or periodic.

         If caller has no more requests left or if event ID
         is used by another request a QEL is returned to answer
         queue immediately. In this QEL current time is set
         to a value out of HM format range.

         Input:  T̲i̲m̲e̲

                 The time when time out shall be sent. The time
                 must be in one of these formats

                 Hours from now
                 Minutes from now
                 Seconds from now



                 Or if the time out is requested only once

                 HM format
                 MIN format

                 T̲y̲p̲e̲

                 Telling whether the time out is periodic or
                 not and what format is used by input time.

                 A̲n̲s̲w̲e̲r̲ ̲q̲u̲e̲u̲e̲

                 Identifying the sub queue to which the time
                 out shall be sent. Caller must have receive
                 capability to the queue.

                 E̲v̲e̲n̲t̲ ̲I̲D̲ 

                 Callers own information (2 words). Must be
                 unique for calling sub-process.

         Output: C̲C̲

                 -   Complete
                 -   Unknown time format
                 -   Wrong time format
                 -   No capability

         Output when time out time is present:

                 Q̲E̲L̲

                 Reference to a QEL containing event ID in the
                 first two words of information field and current
                 time in HM format in the last info word. The
                 QEL has object type TIME OUT.



4.1.6.2.3.6 C̲a̲n̲c̲e̲l̲ ̲T̲i̲m̲e̲ ̲O̲u̲t̲

         A previous time request is cancelled.

         If a time out QEL has already been sent, then the call
         has no effect.





4.1.6.2.4    M̲e̲s̲s̲a̲g̲e̲ ̲M̲o̲n̲i̲t̲o̲r̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲

         The general environment for Message Monitor is shown
         in figure 4.1.6.2.4-1. Message Monitor is an interface
         module between application processes and Message Management
         System. In a few cases the parent process COPSY is
         involved in security procedures.

         Message Monitor and Message Management System form
         together a Service System in the sense described in
         section 2.2.1.6.

         All Message Monitor functions available to application
         processes are called via System Call Monitor as described
         in section 2.2.1.6 and 4.1.6.2.6. All functions may
         be called as Init-Wait functions.

         The SAVE VIEW function is called by application processes
         requesting a checkpoint. The request is sent to CSF
         process which in turn calls the SAVE function. This
         mechanism is used in order to ensure that only one
         SAVE is in progress at a time and that SAVE requests
         can be synchronized without risk of deadlock.

         As all Message Management System functions are executed
         within a short time, it makes no sense to cancel any
         of those functions while in progress. Thus while CANCEL
         is a legal function, it has no effect on MMS functions.

         The parameter conventions for Message Monitor functions
         are summarized in table 4.1.6.2.4-1. The input parameters
         apply to the Init part of the function while the output
         parameters are delivered by the Wait part.

         The View Attributes parameter always has the format
         of a "View-Attributes Parameter Block" as shown in
         section 4.2.4.4.

         The view Reference parameter is always a Queue Element
         Reference as defined by Queue Monitor in 4.1.1.2.3.

         The Destination Queue parameter is a queue reference
         as defined by Queue Monitor in section 4.1.6.2.2.


















































      FIGURE 4.1.6.2.4-1…01…MESSAGE MONITOR ENVIRONMENT


                                            Input                       Output
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Create CIF                 CIF Creation
                                                   View
                                                   Reference
                          Parameter Block   View Attributes
                        Destination Queue   Completion
                                            Code
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Create New CIF             View Reference,             View
                                                                        Reference,
                                                                        new
                                                                        version
                          previous version  View Attributes,
                                            new version
                                                   Completion
                                                   Code
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Create View                View Reference,             View
                                                                        Reference,
                                                                        new
                                                                        version
                          Predecessor View
                        View Attributes     View Attributes
                        Destination Queue   Completion
                                            Code
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Create Fields              View Reference              Completion
                                                                        Code
                        Field Information
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Get View                   View Reference              View
                                                                        Attributes
                 Attributes                                             Completion
                                                                        Code
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Change Profile             View Reference              Completion
                                                                        Code
                        Qprofile
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 - Dismantle View           View Reference              Completion
                                                                        Code
                 - Open View
                 - Close View
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Save View                  View Reference              Completion
                                                                        Code
                        Recovery Level
                        Dismantle Flag
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Save   VCB Id                     Completion
                                                   Code
                        Recovery Level
                        Dismantle Flag
                        Buffer Address
                        Buffer Length
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

Table 4.1.6.2.4-1 Message Monitor Functions Interface Summary…86…1…02…                …02…      …02…         
          …02…      …02…                    
                                            Input                       Output
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Store  View Reference      CIF Id,
                                            View Id
                                                   Completion
                                                   Code
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Retrieve                   Type                        View
                                                                        Reference
                        Dump File Reference View Attributes
                        Dump Segment Id     Completion
                                            Codes
                        View Attributes
                        Destination Queue
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Dump CIF                   Dump File
                                            Reference                   Number
                                                                        of
                                                                        Dumped
                                                                        CIFs
                 Sequence                   CIF Id
                                            List   Updated
                                                   CIF
                                                   Id
                                                   List
                                                   Completion
                                                   Code
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Clear  Clear Time          Completion
                                            Code
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Init Dump                  Dump File
                                            Reference                   Dump
                                                                        Segment
                                                                        Id
                                                   Completion
                                                   Code
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Terminate Dump             Dump File
                                            Reference                   Completion
                                                                        Code
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Set Security               Security
                                            Interrogation               Completion
                                                                        Code
                 Parameters                   Profile
                        Security Warning
                          Profile
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Start System               Recovery
                                            Level  Completion
                                                   Code
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Set Threshold              Threshold
                                            Values Completion
                                                   Code
                 Values
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

           Table 4.1.6.2.4-1 (contd.)


                 Get Threshold              None                        Warning
                                                                        Type
                 Warning                                                Completion
                                                                        Code
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 Get Storage                None                        Occupancy
                                                                        Figures
                 Occupancy
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

                 - Read View                View Reference              Updated
                                                                        Field
                                                                        List
                 - Write View               Buffer
                                            Address                     Completion
                                                                        Code
                        Buffer Size
                        Field List
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲
 ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

           Table 4.1.6.2.4-1 (contd.)


4.1.6.2.5        C̲o̲r̲o̲u̲t̲i̲n̲e̲ ̲M̲o̲n̲i̲t̲o̲r̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲

                 Coroutine Monitor is a set of shared
                 procedures. An overview of parameters
                 for the functions is shown in table
                 4.1.6.2.5-1/2.



















































                    TABLE 4.1.6.2.5-1
      PARAMETERS FOR COROUTINE SYSTEM CALL FUNCTIONS
















































   TABLE 4.1.6.2.5-2…01…PARAMETERS FOR SEMAPHORE FUNCTIONS


4.1.6.2.6    S̲y̲s̲t̲e̲m̲ ̲C̲a̲l̲l̲ ̲M̲o̲n̲i̲t̲o̲r̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲

         System Call Monitor is largely a transparent interface
         between applications and service systems.

         A global view of the System Call Monitor interfaces
         and their logical connection is shown in figure 4.1.6.2.6-1.

         Service System Interface is in this section in short
         called Service System.



4.1.6.2.6.1 G̲e̲n̲e̲r̲a̲l̲ ̲S̲y̲s̲t̲e̲m̲ ̲C̲a̲l̲l̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲s̲

         As seen in table 4.1.6.2.6-1, Init System Call and
         System Call have each two parameter groups:

         -   Function

         -   Service System Parameters

         These two parameter groups are by Init System Call
         sent unchanged to the appropriate Service System in
         the Init Function call, as shown in table 4.1.6.2.6-2.

         The general conventions for the two parameter groups
         are:

         a)  F̲u̲n̲c̲t̲i̲o̲n̲

             Consists of two bytes:

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

              SERVICE SYSTEM ID     SERVICE SYSTEM FCT
              ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲

             SERVICE SYSTEM ID:

             Identification of the Service System to be called,
             e.g.

             IOS
             QMON
             MMON
             TMP
             FORMAT I/O


             SERVICE SYSTEM FCT:

             The function requested from Service System, e.g.

             RECEIVE
             READBYTES

             The SERVICE SYSTEM part of function is delivered
             to SERVICE SYSTEM in Register R7.

             The complete function is delivered by the application
             as a register R6 parameter in the MONITOR call
             to System Call Monitor.

         b)  S̲e̲r̲v̲i̲c̲e̲ ̲S̲y̲s̲t̲e̲m̲ ̲P̲a̲r̲a̲m̲e̲t̲e̲r̲s̲

             These are the five registers RO-R4 in Init System
             Call and they are passed unchanged to Init Function.



4.1.6.2.6.2 G̲e̲n̲e̲r̲a̲l̲ ̲W̲a̲i̲t̲-̲C̲o̲m̲p̲l̲e̲t̲e̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲s̲

         The call of System Call Monitor function WAIT will
         eventually result in a call of COMPLETE FUNCTION in
         the Service System responsible for the operation in
         question.

         The return parameters from COMPLETE FUNCTION are:

         a)  Service System Return Parameters:

             Registers R0 - R4

         b)  Completion Code:

             Register R7

         c)  Exit Condition:

             Exit 0: Error Exit
             Exit 1: Normal Exit

         These return parameters will by WAIT be returned directly
         to the calling application.





4.1.6.2.6.3 I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲t̲o̲ ̲S̲e̲r̲v̲i̲c̲e̲ ̲S̲y̲s̲t̲e̲m̲

         a)  G̲e̲n̲e̲r̲a̲l̲ ̲I̲n̲f̲o̲r̲m̲a̲t̲i̲o̲n̲

             There are two types of Service Systems. One type
             uses the I/O system. The other type uses synchronization
             elements to receive external events. System Call
             Monitor includes one Service System of each type:

             -   I/O Interface

             -   PCF Interface

             A Service System of type 2 shall have exactly one
             synchronization element associated with it, and
             all "awaits" on the synchronization element must
             be performed by System Call Monitor.

             Each Service System is described in System Call
             Monitor by a Service System Control Block, shown
             in 4.2.6.4.6. Each initiated operation is described
             by a System Operation Control Block, shown in 4.2.6.4.5.

             An operation is pending if it is not yet terminated
             by an external event. The SOCBs for pending operations
             are chained to the SSCB.

             An operation is done when it has been terminated
             by an external event. It is the responsibility
             of the Service system to determine when an operation
             changes status from pending to done, and to change
             the System Call Status in SOCB. This change must
             take place in the "answer received" procedure or
             the "init function" procedure of the Service System.

             Some Service Systems work on data shared by several
             processes. In that case exclusive access to shared
             data can be assured by locking a hardware semaphore
             before manipulating the data. System Call Monitor
             can disable interrupts and lock a semaphore before
             entry to a Service System and unlock semaphore
             and enable interrupts after return. The SSCB contains
             information describing if this action shall be
             performed.



             The following sections describe the rules which
             must be followed by the four Service System procedures.

         b)  I̲n̲i̲t̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲

             The Function and Service System parameters are
             transferred unchanged from the calling application.
             The operation to be initiated will be described
             by the SOCB, the address of which is delivered
             as a parameter.

             The Service System shall initiate the operation
             and save in SOCB the information necessary to recognize
             the answer later on in "answer received" function.

             If the Service System is of the first type using
             the I/O system, it shall initiate the function
             by calling an init-  function of the I/O system.
             The "user operation reference" parameter to the
             init call shall be the SOCB Pointer.

             The operation may already be terminated in the
             Init Function. This may for example happen in case
             of a parameter error. In that case the Service
             System must change the SOCB System Call Status.
             The status may be changed to:

             1)  Done

                 Then the Service System will eventually be
                 called in the Complete Function entry point
                 with the SOCB as parameter.

             2)  Error

                 Then the return parameters and exit condition
                 will be transferred to the application and
                 the SOCB released.

             Upon return from Init Function, System Call Monitor
             will chain the SOCB to a list depending upon System
             Call Status:



             3)  Pending

                 Chain to pending operations list in SOCB

             4)  Done

                 Chain to the ready operations list

             5)  Error

                 Release SOCB

         c)  A̲n̲s̲w̲e̲r̲ ̲R̲e̲c̲e̲i̲v̲e̲d̲

             For a type 1 Service System this procedure is entered
             when I/O system has returned the SOCB pointer as
             "user operation reference" in a General Await function
             call. The Service System may now determine if the
             function is terminated or if yet another I/O Operation
             shall be initiated. In the latter case it shall
             just return to System Call Monitor without changing
             the System Call Status of SOCB. If the operation
             is terminated, the following shall be done by Service
             System:

             1)  Change SOCB System Call Status to DONE

             2)  Call the I/O function WAITOPERATION and save
                 the return parameters in SOCB. These shall
                 later on be used in Complete Function.

             For a type 2 Service System the Answer Received
             procedure is entered whenever info is received
             in the associated synchronization element.

             Answer Received is called with two parameters:

             3)  A pointer to the received Info.

             4)  A pointer to first SOCB in the list of pending
                 SOCBs.

             The Service System shall now inspect the list of
             SOCBs and determine if one or more of the operations
             are terminated. It shall then change System Call
             Status of the terminated SOCBs to DONE and return
             two parameters to System Call Monitor:



             5)  Number of terminated operations (may be zero)

             6)  A pointer to the first terminated operation
                 if any

             For each of the terminated operations complete
             function will eventually be called.

         d)  C̲o̲m̲p̲l̲e̲t̲e̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲

             This Service System procedure is called when the
             application has called the System Call Monitor
             function WAIT and the referenced SOCB is DONE.
             The Service System shall now complete the processing
             of the operation and return parameters and exit
             condition.

         e)  C̲a̲n̲c̲e̲l̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲

             This procedure will only be called if the operation
             is still pending. The Service System may change
             System Call Status to DONE or may leave it unchanged
             awaiting an answer eventually.

















































    FIGURE 4.1.6.2.6-1…01…SYSTEM CALL MONITOR INTERFACES
















































TABLE 4.1.6.2.6-1…01…APPLICATION INTERFACE TO SYSTEM CALL MONITOR
















































TABLE 4.1.6.2.6-2…01…SYSTEM CALL MONITOR INTERFACE TO SERVICE SYSTEM


4.2      S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲s̲



4.2.1    C̲S̲F̲ ̲C̲o̲m̲m̲o̲n̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲



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

         The CSF Common Function Subpackage covers functional
         areas which are utilized by other CSF subpackages as
         well as application processes. They are shown on figure
         4.2.1.1-1.



















































          FIGURE 4.2.1.1-1…01…CSF SHARED FUNCTIONS