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:
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.
Authorization: | Supervisor state or problem state, any PSW key. |
Dispatchable unit mode: | Task. |
Cross memory mode: | PASN = HASN. |
Amode: | 31-bit or 24-bit. Note: See "Addressability
mode (Amode) considerations" under CALL instruction API environmental restrictions and programming requirements.
|
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.
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.
For equivalent PL/I and assembler language declarations, see Converting parameter descriptions.