Copyright Digital Equipment Corp. All rights reserved.

Description

   The symbiont uses the SMB$SEND_TO_JOBCTL routine to send messages
   to the job controller.

   Most messages the symbiont sends to the job controller are
   responses to requests made by the job controller. These responses
   inform the job controller that the request has been completed,
   either successfully or with an error. When the symbiont sends
   the message, it usually indicates that the request has been
   completed.

   In such messages, the request argument corresponds to the
   function code of the request that has been completed. Thus, if
   the job controller sends a request using the SMBMSG$K_START_
   TASK code, the symbiont responds by sending a SMB$SEND_TO_JOBCTL
   message using SMBMSG$K_START_TASK as the request argument.

   The responses to some requests use additional arguments to send
   more information in addition to the request code. The following
   table shows which additional arguments are allowed in response to
   each different request:

   Request                Arguments

   SMBMSG$K_START_STREAM  request
                          device_status
                          error
   SMBMSG$K_STOP_STREAM   request
   SMBMSG$K_RESET_STREAM  request
   SMBMSG$K_START_TASK    request
   SMBMSG$K_PAUSE_TASK    request
   SMBMSG$K_RESUME_TASK   request
   SMBMSG$K_STOP_TASK     request
                          error (See footnote.)

   Footnote: This is usually the value specified in the SMBMSG$K_
   STOP_CONDITION item that was sent by the job controller with the
   SMBMSG$K_STOP_TASK request.)

   In addition to responding to requests from the job controller,
   the symbiont can send other messages to the job controller. If
   the symbiont sends a message that is not a response to a request,
   it uses either the SMBMSG$K_TASK_COMPLETE or SMBMSG$K_TASK_STATUS
   code. Following are the additional arguments that you can use
   with the messages identified by these codes:

   Code                   Arguments

   SMBMSG$K_TASK_         request
   COMPLETE
                          accounting
                          error
   SMBMSG$K_TASK_STATUS   request
                          checkpoint
                          device_status

   The symbiont uses the SMBMSG$K_TASK_STATUS message to update the
   job controller on the status of a task during the processing
   of that task. The checkpoint information passed to the job
   controller with this message permits the job controller to
   restart an interrupted task from an appropriate point. The
   device-status information permits the symbiont to report changes
   in device's status (device stalled, for example).

   The symbiont can use the SMBMSG$K_TASK_STATUS message to request
   that the job controller send a stop-stream request. It does this
   by setting the stop-stream bit in the device-status argument.

   The symbiont can also use the SMBMSG$K_TASK_STATUS message
   to notify the job controller that the symbiont has paused in
   processing a task. It does so by setting the pause-task bit in
   the device-status argument.

   The symbiont uses the SMBMSG$K_TASK_COMPLETE message to signal
   the completion of a task. Note that, when the symbiont receives a
   START_TASK request, it responds by sending a SMB$SEND_TO_JOBCTL
   message with SMBSMG$K_START_TASK as the request argument. This
   response means that the symbiont has started the task; it does
   not mean the task has been completed. When the symbiont has
   completed a task, it sends a SMB$SEND_TO_JOBCTL message with
   SMBMSG$K_TASK_COMPLETE as the request argument.

   Optionally, the symbiont can specify accounting information when
   sending a task-completion message. The accounting statistics
   accumulate to give a total for the job when the job is completed.

   Also, if the symbiont is aborting the task because of a symbiont-
   detected error, you can specify up to three condition values in
   the error argument. Aborting a task causes the remainder of the
   job to be aborted.