Fast path support

For applications that have strict communications path length requirements, a fast path extension is provided to further reduce z/OS® UNIX-to-TCP/IP stack communications. This extension is available to applications that use the UNIX System Services socket API, the z/OS XL C/C++ Runtime Library functions, and the native MVS™ socket APIs (such as C/C++, EZASMI macro, EZASOKET, REXX, or CICS® socket APIs) provided by the Communications Server. It is not available to applications that are using the Pascal API.

With fast path support, communications are reduced for the following socket system calls:

These performance enhancements are also available for the corresponding socket system calls on the z/OS UNIX asynchronous socket interface (BPX1AIO).

Rule: Automatic fast path support is activated by default.

Automatic fast path support does not have the limitations that exist with the fast path support that requires activation (see Activating fast path support). Most notably, automatic fast path supports POSIX signals.

Restriction: Because automatic fast path supports POSIX signals, applications that cannot handle interruptions by signals must continue to explicitly activate fast path support to use it. For more information about explicitly activating fast path support, see Activating fast path support.

Activating fast path support

You can activate this feature for an entire z/OS UNIX process by using the z/OS UNIX environment variable _BPXK_INET_FASTPATH. The value of this variable determines whether a socket application is marked fast path. An XL C/C++ application can set the variable by using the setenv function, or you can export the variable to the z/OS UNIX shell environment before the socket application is started. An application that is using the z/OS UNIX API can set this variable by using the BPX1ENV service.

Rule: z/OS UNIX environment variables have a process-wide scope only; that is, they usually affect a single MVS address space only. For multiple UNIX processes within a single address space, the setting of this environment variable might vary for each process within the address space. It is not a problem if some of your applications use fast path services and others do not.

If you are using the _BPXK_INET_FASTPATH environment variable, the following restrictions apply to applications that are using the UNIX System Services socket API or the z/OS XL C/C++ Runtime Library functions:

For environments that do not use common INET, set the value of this variable to the name that is specified on the TYPE parameter of the FILESYSTYPE statement in the BPXPRMxx parmlib member.

For common INET environments, the value that is used to set the environment variable depends on whether the application is using the TCP or UDP protocols. In a common INET environment, set the variable as follows:

Applications can also enable fast path processing for a single socket by issuing the Iocc#FastPath IOCTL for the socket, or by using the w_ioctl() or the BPX1IOC APIs. This IOCTL is effective only if it is issued against a socket that is already associated with a specific TCP/IP stack. Sockets are considered associated with a specific TCP/IP stack if they meet any of the following conditions:

The Iocc#FastPath constant is defined in the BPXYIOCC. This IOCTL requires a 4-byte argument as input. Set this argument to a nonzero value to activate fast path, or a zero value to disable fast path on the specified socket.