The recvmsg callable service receives messages on a socket and stores them in a set of buffers. The socket can be either connected or unconnected. If no messages are available at the socket, the service either waits for a message to arrive, or returns an EWOULDBLOCK — depending on whether the socket is defined as blocking or nonblocking, and whether the SO_RCVTIMEO socket option is in effect.
Operation | Environment |
---|---|
Authorization: | Supervisor state or problem state, any PSW key |
Dispatchable unit mode: | Task or SRB |
Cross memory mode: | PASN = HASN |
AMODE (BPX2RMS): | 31-bit |
AMODE (BPX4RMS): | 64-bit |
ASC mode: | Primary mode |
Interrupt status: | Enabled for interrupts |
Locks: | Unlocked |
Control parameters: | All parameters must be addressable by the caller and in the primary address space. |
|
AMODE 64 callers use BPX4RMS with the same parameters. All addresses in the Message_hdr structure are doublewords.
The name of a fullword that contains the socket file descriptor for which the recvmsg is to be done.
The name of a field that contains the message header, which describes how the message is to be received. See BPXYMSGH — Map the message header for more information about the format of this field. In 64-bit mode, Message_hdr contains doubleword pointer subfields, and points to an Iov_struct structure that contains doubleword pointer and length subfields.
The name of a field that contains information about how the data is to be received. See BPXYMSGF — Map the message flags for more information about the format of this field.
The name of a field that contains the ALET for the IOV structure that is specified in Message_hdr.
The name of a field that contains the ALET for the buffers that are pointed to by the IOV structure that is specified in Message_hdr.
Return_code | Explanation |
---|---|
EBADF | An incorrect file descriptor was specified. The following reason codes can accompany the return code: JRFileDesNotInUse, JRFileNotOpen. |
EINTR | A signal interrupted the recvmsg service before any data was available. The following reason code can accompany the return code: JRSockRdwrSignal. |
EINVAL | The socket is marked shutdown for read; or incorrect data was received as a parameter. The following reason codes can accompany the return code: JRInvalidMsgh, JRSocketClosed, JRSocketCallParmError. |
EIO | There has been a network or transport failure. The following reason codes can accompany the return code: JRInetRecycled, JRPrevSockError. |
ENOBUFS | A buffer could not be obtained. The following reason code can accompany the return code: JROutofSocketCells. |
ENOTSOCK | Socket_descriptor does not refer to a valid socket descriptor. The following reason code can accompany the return code: JRMustBeSocket. |
EWOULDBLOCK |
The following reason codes can accompany the return code: JRWouldBlock, JRTimeout. |
The name of a fullword in which the recvmsg service stores the reason code. The recvmsg service returns Reason_code only if Return_value is -1. Reason_code further qualifies the Return_code value. For the reason codes, see z/OS UNIX System Services Messages and Codes.
There are no restrictions on the use of the recvmsg service.
For an example using this callable service, see BPX2RMS (recvmsg) example.