SC_EXITTABLE
Use the SC_EXITTABLE statement to enable exit routines for select z/OS UNIX system calls. By default, when SC_EXITTABLE is not specified, system calls are not enabled for the exits.
Guideline: Using exits degrade performance. The more system calls that
are enabled for exits, the greater the performance degradation. When you evaluate performance
degradation, consider the following factors:
- How often the system calls are invoked.
- The number of exit routines that were added to the exit points.
- The number of system calls that are enabled for exits.
Requirements: Before the exit routines can be enabled, a syscall exits
file must be created that conforms to certain formatting rules. If the file does not follow these
formatting rules, the linkage stub name might not be recognized and the system call is not enabled
for exits. In addition, IBM recommends that the file reside in the /etc
directory, for example, /etc/scexits. This naming structure fits in with the
IBM strategy to place all customized data in the /etc directory.
The formatting rules for the syscall exits file are as follows:
- When you include comments in the list, each comment must start with /* and end with */. If the end-of-comment (*/) is not specified, the end of the line is treated as the end of the comment.
- Linkage stub names must be uppercase for them to be recognized correctly.
- Linkage stub names can be on the same line as a comment but not within the comment delimiters.
- Linkage stub names for the same system call can be specified multiple times.
- Either the 31-bit and 64-bit linkage stub name can be specified to identity the callable service to have exits enabled. Exit routines are invoked for the callable service regardless of the AMODE of the service caller.
For
example:
/********************************************************************/
/* */
/* Name: Sample system call exits enabling file */
/* */
/* Description: Contains a list of z/OS UNIX callable service */
/* linkage stub names that identifies the callable */
/* services that system call exits are to be enabled */
/* for. Callable services with system call exits */
/* enabled will invoke all exit routines added to the */
/* pre-syscall and/or post-syscall exit points when */
/* the callable service is invoked. */
/* */
/* See Appendix K. in the z/OS UNIX System Services */
/* Programming: Assembler Callable Service book for */
/* details about callable service exits. */
/* */
/* */
/********************************************************************/
/********************************************************************/
/* */
/* Product A – system call enabled for exits */
/* */
/********************************************************************/
BPX1STA BPX1FST BPX1RPH BPX1SUI BPX1TLS BPX1GPI BPX1RWD BPX1VOP
BPX4LOD
/********************************************************************/
/* */
/* Product B – system calls enabled for exits */
/* */
/********************************************************************/
BPX1STA /* stat() */
BPX1FST /* fstat() */
BPX1RPH /* realpath() */
BPX1EXC /* exec() */
BPX1PTC /* pthread_create() */
BPX1ACC /* access() */
BPX2ITY /* isatty2() */
Changes to the exits file do not take effect immediately. The table is checked every 15 minutes
and refreshed if it was changed. If a change must be activated sooner, you have two options.
- You can use the SETOMVS command.
where /etc/scexits is the name of the system call exits file.SETOMVS SC_EXITTABLE='/etc/scexits' - You can also use the SET OMVS
command.
where xx is the name of a z/OS UNIX parmlib member (BPXPRMxx) that contains a SC_EXITTABLE statement. Any other statements that are specified in the BPXPRMxx member are also processed by the SET OMVS command.SET OMVS=xx
After these commands complete, system call exits are enabled for those callable services that are specified in the file. They are disabled for the callable services that are not specified in the file.