z/OS MVS Installation Exits
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


IEALIMIT — User Region Size Limit Exit

z/OS MVS Installation Exits
SA23-1381-00

Topics for This Exit Appear as Follows:

An installation can limit application programs' access to nonextended private area storage (subpools 0-127, 129-132, 244, 251 and 252) by writing IEALIMIT. This exit routine is invoked before each job step is started. IEALIMIT can be used under MVS™ to set nonextended region size and nonextended region limit only. The values set by IEALIMIT should be less than the size of the nonextended private area. If they are not, the control program uses the size of the nonextended private area.

The values set by IEALIMIT have no effect on establishing the extended region size and extended region limit. It is recommended that the exit routine IEFUSI be used in place of IEALIMIT when possible, especially when jobs are expected to specify a region value greater than 16 megabytes. IEFUSI can include region limit processing for the private area for both less than and greater than 16 megabytes. See IEFUSI — Step Initiation Exit for a comparison of these two exit routines.

Limiting Region Size Consideration: If you want to use the IEALIMIT exit to control region size, and you have the IEFUSI exit available, ensure that the flag to bypass the IEALIMIT exit is not set in the IEFUSI parameter list.

Installing the Exit Routine

The IBM-supplied IEALIMIT exit routine is linkedited with the nucleus. To replace the IBM-supplied routine with your own IEALIMIT, you must linkedit your own version into the nucleus prior to an initial program load.

For general instructions on installing an exit routine, see Link editing an Installation Exit Routine into a Library.

Exit Routine Environment

IEALIMIT receives control in the following environment:
  • Enabled for interrupts.
  • In supervisor state with PSW key 0.
  • In AMODE 24 and RMODE 24.
  • In any address space.
  • Holds a local lock.
  • Under the initiator's task.

Exit Recovery: The exit routine runs under an ESTAE. The VSM recovery routine that gets control should an error occur in the IEALIMIT exit will (1) fill in the SDWA (with IEALIMIT as the module name) and take an SVC dump, and then (2) either (a) retry the operation (including another call to the IEALIMIT exit) or (b) percolate, which could eventually result in an ABEND.

Because IEALIMIT is an authorized routine that runs in key 0, it can provide its own recovery routine, which would have the same capabilities as the IEALIMIT routine itself. The recovery routine would be subject to the limitations on all recovery routines, which are documented in the topic "Providing Recovery" of z/OS MVS Programming: Authorized Assembler Services Guide.

Exit Routine Processing

IEALIMIT gets control after an existing region has been freed, and before a new region is initialized. On entry, the IEALIMIT routine receives in register 0 the number of bytes requested by the application program for its region, as specified through the JCL REGION parameter. If this REGION value is less than 16 megabytes, the value in register 0 is the same as the REGION value. If this REGION value is greater than 16 megabytes, the value in register 0 is equal to the size of the nonextended private area minus 64K. Register 1 contains the same value as register 0.

If the JCL REGION parameter value is zero or if the parameter is absent, then the installation JES default value is used. If the JES default is zero, the IEALIMIT routine receives a zero in register 1.

After processing, the IEALIMIT routine returns values in both registers 0 and 1. Register 0 contains the number of bytes to be used as the region size which should be less than the size of the nonextended private area. Register 1 contains the number of bytes to be used as the region limit. Both registers 0 and 1 should be rounded to a multiple of 4K. These values in registers 0 and 1 determine how much space is allocated in the user's region, in response to GETMAIN and STORAGE requests.

IEALIMIT Default Values: If your installation does not supply an IEFUSI exit routine to control region size, and does not override the default values in the IBM-supplied IEALIMIT exit routine, users obtain the results shown in Table 1 when specifying various values for the region size on the REGION parameter.

Table 1. IEALIMIT Default Values
JCL Region parameter Results-below 16 Mb Results-above 16 Mb
0K or 0M The job step is allocated all the storage available below 16 megabytes. The resulting size of the region below 16 megabytes is 16 megabytes minus the amount of virtual storage allocated to MVS. The job step is allocated all the storage available above 16 megabytes. The resulting size of the region above 16 megabytes is 2 gigabytes minus the amount of virtual storage allocated to MVS, minus 16 megabytes.
> 0K or 0M and <= 16384K or 16M Establishes the size of the private area below 16 megabytes. If the region size specified is not available below 16 megabytes, the job (or job step, if coded on the EXEC statement) abnormally terminates with an ABEND 822. The extended region size is the default value of 32 megabytes
> 16384K or 16M and <= 32768K or 32M The job (or job step) is allocated all the storage available below 16 megabytes. The resulting size of the region below 16 megabytes is 16 megabytes minus the amount of virtual storage allocated to MVS. The extended region size is the default value of 32 megabytes.
> 32768K or 32M and <= 2096128K or 2047M The job (or job step) is allocated all the storage available below 16 megabytes. The resulting size of the region below 16 megabytes is 16 megabytes minus the amount of virtual storage allocated to MVS. The extended region size is the specified value. If the region specified is not available above 16 megabytes, the job step receives whatever storage that is available above 16 megabytes, up to the requested amount. The resulting size of the region above 16 megabytes depends on system options and on what system software is installed.

See z/OS MVS Initialization and Tuning Guide for further information on the effect of the region limit and region size on requests for storage.

Programming Considerations

Code IEALIMIT to be reentrant. If this exit routine uses dynamic storage, use subpool 229, 230, or 249 for that storage. Do not use 0-127, as this will determine the key of the subpool for the duration of the jobstep. Common storage and LSQA are not recommended.

When using IEALIMIT to limit region size, the region size should be less than the region limit. This provides protection against programs that issue variable length GETMAINs with very large maximums and then do not immediately free part of that space, or free such a small amount that a subsequent GETMAIN (possibly issued by a system service) fails.

Entry Specifications

Either the value specified by the REGION parameter on the JOB or EXEC statement or the value of the JES default is passed to the IEALIMIT routine so that the exit can determine whether it is acceptable.

Registers at Entry: The contents of the registers on entry to the exit are as follows.

Register
Contents
0
If the application program requests a region that is less than 16 megabytes, then register 0 contains the size of the region requested by the application program.

If the application program requests a region that is greater than 16 megabytes, then register 0 contains a value equal to the size of the available private area minus 64K.

Note: An application program explicitly requests a region that is less than 16 megabytes by specifying ‘REGION=xxM’ on the JOB or EXEC JCL statements and making ‘xx’ less than or equal to 16.

An application program explicitly requests a region that is greater than 16 megabytes by specifying ‘REGION=xxM’ on the JOB or EXEC JCL statements and making ‘xx’ larger than 16.

An application program requests a default region by omitting the REGION parameter from both the JOB and EXEC JCL statements. The value that is passed in register 0 is controlled by JES.

1
The contents are the same as register 0.
2-12
Not applicable
13
Register save area
14
Return address
15
Entry point address of IEALIMIT

Return Specifications

The IEALIMIT routine returns a region size and region limit.

Registers at Exit: Upon return from the exit processing, the register contents must be as follows.

Register
Contents
0
The number of bytes to be used as the region size. This number should be less than the value in register 1.
1
The number of bytes to be used as the region limit. This value should be less than the size of the nonextended private area.
2-15
Restored to contents at entry

Coded Example of the Exit Routine

Figure 1 is a coded example of the IEALIMIT exit routine.
Figure 1. Example: IEALIMIT exit routine
* Save caller's registers and establish addressability.
           STM   14,15,12(13)
           STM   2,12,28(13)
           BALR  9,0
* If this is not a request for an unlimited
* region, then increase the region limit by 64K.
* The region size is not changed.
           LTR   1,1
           BZ    EXIT
           AL    1,INCRMENT
* Restore caller's registers and return to caller.
EXIT       LM    14,15,12(13)
           LM    2,12,28(13)
           BR    14
INCRMENT   DC    F'65536'
The IBM-supplied IEALIMIT routine as described in this topic does the following processing:
  • If register 1 contains a nonzero value, the IEALIMIT routine adds 64K to its contents and returns to the caller. This value in register 1 is used to limit the allocation of storage from subpools 0-127, 129-132, 244, 251, and 252. The content of register 0 is unchanged.
  • If register 1 contains a zero, the IEALIMIT routine returns a zero in register 1 to the caller. This indicates that no limit is assigned to the job, started program, or TSO/E user.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014