The GIVESOCKET call is used to pass a socket from one
process to another.
UNIX-based platforms use a command called FORK to create
a new child process that has the same descriptors as the parent process.
You can use this new child process in the same way that you used the
parent process.
TCP⁄IP normally uses GETCLIENTID, GIVESOCKET, and TAKESOCKET
calls in the following sequence:
- A process issues a GETCLIENTID call to get the job name of its
region and its MVS™ subtask identifier.
This information is used in a GIVESOCKET call.
- The process issues a GIVESOCKET call to prepare a socket for use
by a child process.
- The child process issues a TAKESOCKET call to get the socket.
The socket now belongs to the child process, and can be used by TCP⁄IP to communicate
with another process.
Note: The TAKESOCKET call returns a new socket
descriptor in RETCODE. The child process must use this new socket
descriptor for all calls that use this socket. The socket descriptor
that was passed to the TAKESOCKET call must not be used.
- After issuing the GIVESOCKET command, the parent process issues
a SELECT command that waits for the child to get the socket.
- When the child gets the socket, the parent receives an exception
condition that releases the SELECT command.
- The parent process closes the socket.
The original socket descriptor can now be reused by the
parent.
Sockets that have been given, but not taken for a period
of four days, will be closed and will no longer be available for taking.
If a select for the socket is outstanding, it will be posted.
The following requirements apply to this call:
Authorization: |
Supervisor state or problem state, any PSW key. |
Dispatchable unit mode: |
Task. |
Cross memory mode: |
PASN = HASN. |
Amode: |
31-bit or 24-bit.
|
ASC mode: |
Primary address space control (ASC) mode. |
Interrupt status: |
Enabled for interrupts. |
Locks: |
Unlocked. |
Control parameters: |
All parameters must be addressable by the caller
and in the primary address space. |
Figure 1 shows an example of
GIVESOCKET call instructions.
Figure 1. GIVESOCKET call
instruction example WORKING-STORAGE SECTION.
01 SOC-FUNCTION PIC X(16) VALUE IS 'GIVESOCKET'.
01 S PIC 9(4) BINARY.
01 CLIENT.
03 DOMAIN PIC 9(8) BINARY.
03 NAME PIC X(8).
03 TASK PIC X(8).
03 RESERVED PIC X(20).
01 ERRNO PIC 9(8) BINARY.
01 RETCODE PIC S9(8) BINARY.
PROCEDURE DIVISION.
CALL 'EZASOKET' USING SOC-FUNCTION S CLIENT ERRNO RETCODE.