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 message header (refer to
the section "VMCF User Doubleword"). If the SEND subfunction 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 virtual
storage. There is no internal buffering of data within the control
program {CPl. 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'0011'"). The source virtual machine may cancel a SEND request before the sink virtual machine has executed a RECEIVE subfunction or REJECT function (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 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 subfunction causes data to be
transferred from the source virtual storage to sink virtual storage.
The sink virtual machine can then respond with a REPLY subfunction. The REPLY subfunction causes data to be transferred from specified sink
virtual storage to a REPLY buffer in the source virtual The
source virtual machine then receives a response external interrupt
indicating that the SEND/RECV request is complete. When the source virtual machine executes the SEND/RECV function it
specifies the address and length of both the SEND buffer and REPLY buffer. The address and length specifications are contained within the
user parameter list (VMCPARM). The user parameter list also contains a
message ID and userid of the user to receive the data (see the "VMCPABM Parameter List").
156 IBM VM/310 System Programmer's Guide
April 1, 1981
The source virtual machine can cancel a previously executed SEND/RECV request provided the sink virtual machine has not yet executed the REPLY or REJECTsubfunction. If the sink machine has already executed
the RECEIVE subfunction, only the REPLY be canceled DIAGNOSE Code x'68' Subfunction Code X·0006'"). The sink virtual machine can execute the REJECT subfunction in
response to the SEND/RECV request and cause the entire operation to be
terminated (see "REJECT: DIAGNOSE Code X'68' Subfunction Code X·0011'"). The sink virtual machine can respond to a SEND/RECV request with the REPLY subfunction without executing the RECEIVE This has
the effect of informing the source virtual machine that the sink virtual
machine cannot accept data but that it can send data. The source
virtual machine could have executed the SEND/RECV subfunction only as a
means to solicit data from the sink virtual machine. The application of
this protocol is up to VMCF users. The user doubleword can be used as a
means t::> control such an application (see "VMCF User Doubleword") ... You can execute a SEND/RECV request using the PRIORITY option. The PRIORITY option causes the sink external interrupt for the SEND/RECV request to be queued ahead of any other nonpriority external interrupts.
Response external interrupts directed to the source of a PRIORITY message are also queued in priority order. SENDX directs data to another virtual machine via a faster but more
restrictive protocol than the SEND subfunction. SENDX subfunction data
reaches the sink virtual machine at the same time the SEND external
interrupt reaches the sink. In order to use the SENDX subfunction, the
sink virtual machine must have an external interrupt buffer large enough
to contain both the standard message header and the data. The size of
the external interrupt buffer is specified when you execute the AUTHORIZE subfunction. Attempts to execute SENDX are rejected when the
sink virtual machine's external interrupt buffer is not large enough to
contain the data. After the sink virtual machine receives the SEND external interrupt and data, a response external interrupt is directed
to the source virtual machine. The SENDX subfunction eliminates the
need for a sink virtual machine to execute a RECEIVE subfunction.
A SENDX request can be canceled by the source virtual machine
provided the SENDX external interrupt has not yet been reflected to the
sink virtual machine (see "CANCEL: DIAGNOSE Code X'68' Subfunction Code X'0006·
1I
).
Specify the SENDX buffer address and length in the user parameter
list (VMCPARM). The message ID and userid of the sink virtual machine
are also specified in VMCPARM. The SENDX subfunction can be executed with the PRIORITY allowing the SEND external interrupt to be queued ahead
nonpriority external interrupts for the sink virtual machine.
option
of all
A SENDX request cannot be rejected by the sink virtual machine since t1re - . is -- - rec-e iv-edat th-e-sa-me - ti-m-e - the -ext-eFn-a-l---i-n-t-e-£I'up-t- is received. You can execute the SENDX subfunction with a zero data length causing
only the message header and user doubleword to be transmitted.
Part 2. Control Program (CP) 157
Previous Page Next Page