DATA TRANSFER ERROR CODES When a virtual machine executes a SEND, SEND!, or SEND/RECV subfunction,
the normal DIAGNOSE return code is zero, indicating that the request was
successfully initiated. However, when the actual data transfer takes
place, errors can occur. All errors occurring at data transfer time are
communicated to the source virtual machine in the RESPONSE external
interrupt message header, VMCMHDR. Figure 21 shows error codes
indicating conditions that are possible-after the SENDX, SEND, or SEND/RECV request is initiated. The error codes correspond to DIAGNOSE return code numbers.
, 1 , I Error I I I Code I Meaning I I 0 IThe normal response (no errors) , I I 1 IInvalid buffer address or length. The SEND and/or RECEIVEI I Ibuffers used for a data transfer operation are not within thel , Ivirtual machine's virtual storage. The beginning and ending' I I addresses were valid when a request was initiated but alII I I addresses are not valid. I I I I 5 IUser not available. The sink virtual machine executed thel I IUNAUTHORIZE function, reexecuted the AUTHORIZE SPECIFICI I Isubfunction, or implicitly reset his virtual machine after thel I Isource virtual machine request Was initiated. I I I 6 IProtection violation. The storage key for a virtual machine'sl I ISEND or RECEIVE buffer did not match its PSi key at the timet I Ithe transfer was initiated. (Assume the key was nonzero.) Thisl I lerror code is also set if a virtual machine attempts to RECEIVEI I I data into a CP-owned shared segment. I I I -I I 7 ISENDX data is too large. The sink virtual machine reexecutedl I IAUTHORIZE and specified an external interrupt buffer size less, I Ithan the buffer size at the time a SENDX subfunction wasl I lexecuted. The SENDX data will no longer fit in the sink, I Ivirtual machine buffer. I I I I 15 IPaging I/O error. An uncorrectable paging I/O error occurredl I Iduring the data transfer operation attempting to fetch at I ,virtual machine SEND or RECEIVE buffer. This is a hardware, I Ifailure. I I I I I 16 IIncorrect length. The sink virtual machine executed a RECEIVEI I Isubfunction with a data length (VMCPLENA) smaller than thel I loriginal SEND data length or a REPLY subfunction with a REPLYI I Idata length larger than the source virtual machine REPLY bufferl I Ilength. I , I --I I 17 IDestructive overlap. A virtual machine was communicating withl I litself in a "wrap connection" and his SEND or RECEIVE buffersl I loverlapped one another (intra-virtual machine communication). I I I I I 19 IData transfer error. A data transfer error occurred which wasl I lassociated with the other virtual machine. The transaction didl I Inot complete successfully. I I J
Figure 21. DIAGNOSE Code X'68' Data Transfer Error Codes 170 IB" VM/370 System programmer's Guide
Page of GC20-1807-7 As Updated April 1, 1981 by TNL GN25-0829 Special Message Facility The special message facility enables a virtual machine to send messages
to another virtual machine by issuing the SMSG command. The special
message facility uses the SENDX subfunction of the Virtual Machine
Communication Facility (VMCF) to send the messages. However, the
sending virtual machine does not need to perform the initialization
required by VMCF. Initialization is handled by CP and is described
later in this topic.
To send a message, a virtual machine need only prepare the message
text --up to 129 bytes and issue the class G command, SMSG. Parameters on the SMSG command identify the USERID of the receiving
virtual machine and specify the message text. The format of the message
text must be acceptable to the receiving virtual machine. The SMSG command is described in the CP !or· ..
Before the rece1v1ng virtual machine can receive special messages, it
must enable itself to receive external interrupts, must set bit 31 in
control register 0 to one, and must authorize itself. It authorizes
itself by issuing DIAGNOSE Code X'68', Authorize. The parameter list, VMCPARM, specified with DIAGNOSE Code X'68' must contain a pointer to an
external-interrupt buffer, must specify a buffer length of 169 bytes,
and must have the special message flag (VMCPSMSG) turned on. The
receiving virtual machine may turn on this flag by setting VMCPS8SG to a
value of B'l'. Optionally, the receiving virtual machine may turn on
the special message flag by issuing the class G command, SET SMSG ON.
For information on using DIAGNOSE Code X'68', see "Description of V8CF Subfunctions" and "Invoking VMCF Subfunctions." To understand
virtual machine, Pr otocol. " how a
see
special message is presented to "The SENDX Protocol" in the
the receiving
section "VMCF When a virtual machine no longer wishes to accept special messagesi
it may turn off the special message flag by issuing the command, SET SMSG OFF. To resume receiving messages, the virtual machine may issue
the command, SET SMSG ON. CP sends an error message to any virtual
machine that attempts to send a special message to another virtual
machine that is not accepting special messages. CP handles VMCF initialization and special message processing as
follows. When the SMSG command is issued, CP verifies that no invalid
options were specified and that a valid USE RID was specified. CP also
verifies that the receiving virtual machine is authorized and accepting
special messages. CP then obtains storage for the external-interrupt
buffer and builds the parameter list required by VMCF. Part of the
external interrupt buffer contains the external interrupt message
header. Descriptions of the fields contained in this message header are
described in the section "The External Interrupt Message Header." Note
that the VMCMUSER field contains the word "SYSTEM" while the user
doubleword of the user issuing the SMSG command is contained in the VMCMUSE field.
Finally, CP uses the SENDX subfunction of VMCF to send the message to
the receiving virtual machine. Part 2. Control Program (CP) 171
Previous Page Next Page