If the original request was SEND /RECV and the sink virtual machine had exe­
cuted the RECEIVE subfunction but not the REPLY, the REPLY can be canceled.
A virtual machine is notified of this condition with a DIAGNOSE return code. (For
a description of the return codes, see Figure lIon page 101 .) QUIESCE: DIAGNOSE Code X'68' Subfunction Code X'0008' QUIESCE temporarily rejects SEND, SENDX, SEND/RECV, or IDENTIFY
requests from other virtual machines. QUIESCE allows a virtual machine to
receive any stacked or queued messages but reject further SEND, SENDX, IDEN­
TIFY, or SEND/RECV requests from other virtual machines. QUIESCE can be
used to indicate to other virtual machines that the virtual machine is in QUIESCE status, authorized for communication but not able to accept messages at this time
(e.g., entering slowdown, my buffers are full, try again later). The IDENTIFY sub­
function could be used to inform other virtual machines that a particular user is no
longer in QUIESCE status. You should execute the QUIESCE subfunction before
executing the UNAUTHORIZE subfunction to avoid losing messages (see "UNAUTHORIZE: DIAGNOSE Code X'68' Subfunction Code X'OOOI "'.) A
virtual machine can reset the QUIESCE status (exit slowdown) by executing the RESUME subfunction. (See "RESUME: DIAGNOSE Code X'68' Subfunction
Code X'0009"'). A virtual machine in QUIESCE status may continue to send
messages to other virtual machines. QUIESCE status for a virtual machine only
affects messages sent from other virtual machines. RESUME: DIAGNOSE Code X'68' Subfunction Code X'0009' RESUME cancels the QUIESCE status, allowing your virtual machine to resume
reception of VMCF requests from other virtual machines. You can use the IDEN­
TIFY subfunction to inform other virtual machines that your virtual machine is no
longer in QUIESCE status. (See "IDENTIFY: DIAGNOSE Code X'68' Subfunc­
tion Code X'OOOA"'.) IDENTIFY: DIAGNOSE Code X'68' Subfunction Code X'OOOA' IDENTIFY notifies another virtual machine that your virtual machine is available
for VMCF communication. Use the IDENTIFY subfunction after issuing the AUTHORIZE subfunction or after your virtual machine has been in the VMCF QUIESCE state and you have issued the RESUME sub function. IDENTIFY
causes an external interrupt to be stacked for a specified virtual machine. The vir­
tual machine executing the IDENTIFY subfunction specifies the userid of the user
to receive the external interrupt. The external interrupt identifies the virtual
machine executing the IDENTIFY subfunction. The IDENTIFY subfunction is
provided to inform a host or controller virtual machine that a virtual machine is
activated (logged on) and ready for VMCF communication. The IDENTIFY sub­
function can also be used to inform other virtual machines that your virtual
machine has exited QUIESCE state. There is no response external interrupt asso­
ciated with the IDENTIFY subfunction.
The IDENTIFY subfunction can also be used to pass virtual machine defined con­
trol information. The fields in the VMCF parameter list (VMCP ARM) not used
by the IDENTIFY subfunction may be used to contain additional virtual machine
data.
REJECT: DIAGNOSE Code X'68' Subfunction Code X'OOOB' REJECT selectively rejects pending SEND or SEND/RECV requests from other
VMCF virtual machines. REJECT causes a response external interrupt to be
reflected to the originator of a message. The external interrupt indicates to the
The Virtual Machine Communication Facility 93
The Data Transfer Functions
originator that the message was rejected. The user doubleword within the external
interrupt header may tell a user why the message was rejected. When the user of a
virtual machine executes the REJECT subfunction, he specifies within the VMCF
parameter list (VMCPARM) the message ID of the message to be rejected. A vir­
tual machine cannot reject a message sent with the SENDX subfunction since the
message is received at the same time the external interrupt is received. The
REJECT subfunction can be executed as response to either SEND or
SEND /RECV requests.
The data transfer operations are SEND, SEND/RECV, SENDX, RECEIVE, and REPLY. These operations involve the movement of data from one virtual machine
storage to another virtual machine storage.
SEND: DIAGNOSE Code X'68' Subfunction Code X'0002' SEND directs a message or block of data to another virtual machine. Specify the
virtual address and length of data to be sent within the user parameter list
(VMCPARM). Also, specify in the parameter list a message ID to be associated
with the message and the userid of the user to receive the message (data). You can
also send a doubleword of data to be transmitted within the external interrupt mes­
sage header (refer to the section "VMCF User Doubleword"). If the SEND sub­
function is executed with a data length of zero, only the user doubleword is
transmitted to the sink virtual machine. The sink virtual machine can then respond
with a RECEIVE sub function (zero length) and pass back a doubleword of data to
the source virtual machine. The external interrupt message header identifies the
SEND request. When the sink virtual machine executes a RECEIVE subfunction,
the message is transmitted from the source virtual machine storage to the sink vir­
tual storage. There is no internal buffering of data within the control program (CP). All data is transferred in 2K blocks from virtual storage to virtual storage.
Data is transferred in 2K blocks to test for STORE/FETCH protection violations.
When the data transfer subfunction is complete, the source virtual machine receives
a response external interrupt indicating that the SEND request is complete. The
sink virtual machine receives a DIAGNOSE X'68' return code indicating that the
RECEIVE subfunction is complete. The return code can indicate error conditions
associated with the RECEIVE function or normal completion.
The sink virtual machine has the option to reject a message rather than execute the
RECEIVE subfunction (See "REJECT: DIAGNOSE Code X'68' Subfunction
Code X'OOll "'.) The source virtual machine may cancel a SEND request before
the sink virtual machine has executed a RECEIVE subfunction or REJECT func­
tion (See "CANCEL: DIAGNOSE Code X'68' Subfunction Code X'0006"'.) If you are executing the SEND subfunction, you may specify the PRIORITY option. The PRIORITY option causes the external interrupt for the sink virtual
machine to be queued ahead of all other nonpriority external interrupts. If there
are other PRIORITY external interrupts pending for the sink virtual machine, the
queuing is done in a first in first out manner. That is, PRIORITY interrupts are
queued FIFO among themselves but ahead of all nonpriority interrupts.
SEND/RECV: DIAGNOSE Code X'68' Subfunction Code X'0003' SEND /RECV provides the capability to both send and receive data in a single
VMCF transaction. The SEND/RECV subfunction causes an external interrupt to
be queued for the sink virtual machine. When the sink virtual machine receives the
external interrupt, it can respond with the RECEIVE subfunction. The RECEIVE
94 VM/SP System Programmer's Guide /
Previous Page Next Page