N.B.: The implementation of message data transfer may not work correctly if the SEND and RECEIVE areas (or the ANSWER and REPLY areas) overlap. IBM documentation is vague on this point.
VMGIUCVP(accept{=0},
(2,pathid),(2,msglim),(1,flags),(16,userdata);S==>
rc,(2,msglim),(1,flags)) Accept an IUCV Connection
msglim - Maximum number of outstanding messages on the path (1-255). 0 means unspecified.
Flags are:
X'40' - (quiesce) Forbids the source VM from sending messages until you do a resume operation.
X'80' - Message data can be handled in the parameter list.
Other bits must be zero.
S - The segment that will contain the target's IUCV message buffers (i.e. the virtual machine's real memory segment).
Returned string:
flags(x1) - contains:
1 - Connection not pending, or this is the source path key (must be accepted by the target)
18 - msglim > 255
kt+1 - Path severed already
Return code:
kt+1 - connection has been severed already
targetclass - The target class of the message
Input flags are:
X'04' - Message ID has been specified
0 - Message Rejected
targetclass - The target class of the message rejected
8 - Message found but message class invalid.
Return code:
1 - The connection is not complete (not yet ACCEPTed)
kt+1 - connection has been severed
Return code:
1 - The connection is not complete (not yet ACCEPTed)
kt+1 - connection has been severed
msglength - Length of message to be sent or the sum of the message buffer list lengths.
replyaddr - The address of the reply buffer or of the reply buffer list in the segment passed as part of the connect or accept key call.
maxreplylen - Maximum length of the expected reply or the sum of the lengths in the reply buffer list.
targetclass - value passed to target VM. Can be used for message selection
sourceclass - value returned with the "Message Complete" messge. Can be used for message selection when purging a message.
tag - Returned with the "Message Complete" message. Not passed to the target VM.
Flags are:
X'10' - One way message, No reply expected
X'20' - Send this as a priority message
X'40' - Message buffer list in use. Msgaddr is doubleword aligned address of the list and msglength is the sum of lengths in the list. The X'80' flag must be off.
X'80' - Message data is included in the parameter string. The data is the 8-byte field consisting of the combined msgaddr and msglength fields. If this bit is zero, msgaddr is an address in the segment specified on the connect or accept operation.
Other bits must be zero.
2 - Path Quiesced
3 - Message limit exceeded
4 - Priority messages not accepted
10 - Negative message length
21 - Message in jump not permitted on path
25 - Flags & X'40' and flags & X'80' not valid
Passed string:
inaddr - The address of the receive buffer or of the receive buffer list in the segment provided on the connect or accept key call.
length - The length of the receive buffer or the sum of the lengths in the buffer list
inflags are:
X'20' - indicates that this is a priority message
X'80' - If this bit is on, the 8-byte message is contained in (n,data) and n is 8. If this bit is off, (n,data) contains a count as described under return codes 0 and 5, and n is 4.
outaddr - contains the updated address in the buffer or buffer list.
-4 - Protection exception on the receiver's buffer or buffer list. No string is returned.
-2 - Message ID not found. No string is returned.
0 - Message Received
5 - Receive buffer too short for the message. Message remains outstanding. The rest of the message may be received with subsequent receive operations.
7 - Addressing exception on send buffer. No string is returned.
9 - Message has been purged. No string is returned.
10 - Length < 0. No string is returned.
22 - Send buffer list invalid. No string is returned.
23 - Negative length in buffer list. No string is returned.
24 - Incorrect total length of buffer list lengths. No string is returned.
addr - The address of the reply buffer or of the reply buffer list in the segment provided on the connect or accept key call.
length - The length of the reply buffer or the sum of the lengths in the buffer list
Flags are:
X'20' - Priority reply
X'80' - Reply data included in string. Addr and length are two halves of an 8-byte field containing the reply data.
-4 - Protection exception on the replyer's buffer or buffer list
-2 - Message ID not found
0 - Reply sent
5 - Answer buffer too short for the message.
10 - Length < 0
21 - flags & X'80' not permitted on this path
22 - Answer buffer list invalid
23 - Negative length in buffer list
24 - Incorrect total length of buffer list lengths
25 - Flags & X'08' and flags & x'80' not permitted
sourceclass - The source class of the message
Input flags are:
X'04' - Message ID has been specified
0 - Message Purged
sourceclass - The source class of the message purged.
tag - The tag of the message purged.
Output flags are:
X'20' - The purged message was a priority message.
8 - Message found but message class invalid.