Use IARST64 to request 64-bit Storage Services.
CBF addrchphd STR(IAXCPHD)
To
see details about all of the cells in the pool, use the EXIT option
as follows:CBF addrcphd STR(IAXCPHD) EXIT
For
private storage, the HP1 is anchored in the STCB. The quickest way
to locate the HP1 is to run the SUMMARY FORMAT command for the address
space of interest. Locate the TCB that owns the storage of interest
and then scroll down to the formatted STCB. The HP1 field contains
the address of the HP1. From here, the processing is the same as described
for common storage above.The requirements for the caller are:
Environmental factor | Requirement |
---|---|
Minimum authorization: | Use of the COMMON=YES, TYPE=DREF, TYPE=FIXED, OWNINGTASK=RCT, or the Key00ToF0 parameter with a value other than 9 requires the caller to be running in key 0-7. Use of MEMLIMIT=NO requires key 0-7 or supervisor state. All other options have a minimum authorization of problem state and PSW key 8-15. |
Dispatchable unit mode: | Task or SRB |
Cross memory mode: | Any PASN, any HASN, any SASN |
AMODE: | 64-bit |
ASC mode: | Primary or access register (AR) |
Interrupt status: |
|
Locks: | For the GET request, the following locks may
be held by the caller or must be obtainable by IARST64:
For the FREE request, the caller might hold locks but is not required to hold any. |
Control parameters: | Control parameters must be in the primary address space. |
None.
None.
When REGS=SAVE is not used, the caller does not have to place any information into any general purpose register (GPR) or access register (AR) unless using it in register notation for a particular parameter, or using it as a base register.
When control returns to the caller, the 64-bit GPRs contain:
Some callers depend on register contents remaining the same before and after issuing a service. If the system changes the contents of registers on which the caller depends, the caller must save them before issuing the service, and restore them after the system returns control.
None.
The IARST64 macro is written as follows:
Syntax | Description |
---|---|
name | name: symbol. Begin name in column 1. |
␢ | One or more blanks must precede IARST64. |
IARST64 | |
␢ | One or more blanks must follow IARST64. |
REQUEST=GET | |
REQUEST=FREE | |
,SIZE=size | size: RS-type address or address in register (2) - (12) |
,AREAADDR=areaaddr | areaaddr: RS-type address or address in register (2) - (12) |
,COMMON=NO | |
,COMMON=YES | |
,OWNINGTASK=CURRENT | |
,OWNINGTASK=MOTHER | |
,OWNINGTASK=IPT | |
,OWNINGTASK=JOBSTEP | |
,OWNINGTASK=CMRO | |
,OWNINGTASK=RCT | |
,MEMLIMIT=YES | Default: MEMLIMIT=YES |
,MEMLIMIT=NO | |
,LOCALSYSAREA=NO | Default: LOCALSYSAREA=NO |
,LOCALSYSAREA=YES | |
,OWNER=HOME | |
,OWNER=PRIMARY | |
,OWNER=SECONDARY | |
,OWNER=SYSTEM | |
,OWNER=BYASID | |
,OWNINGASID=owningasid | owningasid: RS-type address or address in register (2) - (12) |
,FPROT=YES | |
,FPROT=NO | |
,TYPE=PAGEABLE | |
,TYPE=DREF | |
,TYPE=FIXED | |
,CALLERKEY=YES | |
,CALLERKEY=NO | |
,KEY00TOF0=key00tof0 | key00tof0: RS-type address or address in register (2) - (12) |
,FAILMODE=RC | |
,FAILMODE=ABEND | |
,REGS=SAVE | |
,REGS=USE | |
,AREANAME=areaname | areaname: RS-type address or address in register (2) - (12) |
,AREAADDR=areaaddr | areaaddr: RS-type address or address in register (2) - (12) |
,REGS=SAVE | |
,REGS=USE | |
,RETCODE=retcode | retcode: RS-type address or register (2) - (12), (GPR15), (REG15), or (R15). |
,RSNCODE=rsncode | rsncode: RS-type address or register (2) - (12), (GPR0), (GPR00), (REG0), (REG00), or (R0). |
The parameters are explained as follows:
To code: Specify the RS-type address, or address in register (2)-(12), of a fullword field, or specify a literal decimal value.
To code: Specify the RS-type address, or address in register (2)-(12), of an eight-byte pointer field.
To code: Specify the RS-type address, or address in register (2)-(12), of a halfword field, or specify a literal decimal value.
To code: Specify the RS-type address, or address in register (2)-(12), of an one-byte field.
To code: Specify the RS-type address, or address in register (2)-(12), of a character field.
To code: Specify the RS-type address, or address in register (2)-(12), of an eight-byte pointer field.
To code: Specify the RS-type address of a fullword field, or register (2)-(12), (GPR15), (REG15), or (R15).
To code: Specify the RS-type address of a fullword field, or register (0) or (2)-(12), (0), (GPR0), (GPR00), (REG0), (REG00), or (R0).
The IARST64 caller might receive abend code X'DC4'. For detailed abend code information, see z/OS MVS System Codes.
Hexadecimal Reason Code | Equate Symbol Meaning and Action |
---|---|
xx0410xx | Equate Symbol: IARST64AbendRsnCellAddrLow Meaning: The storage address passed to the IARST64 FREE service is within a megabyte used for storage pools, but the address is less than the address of the 1st usable storage address. Action: Correct the address passed to IARST64 FREE, making sure it is the same address that was returned from IARST64 GET. |
xx0413xx | Equate Symbol: IARST64AbendRsnCellNotInExtent Meaning: The request was to the IARCP64 or IARST64 FREE service and the address of the storage passed in, is not within the bounds of a cell pool. Action: The address passed to IARST64 REQUEST=FREE must be the same as the address obtained from IARST64 REQUEST=GET. |
xx0419xx | Equate Symbol: IARST64AbendRsnCellOverRun Meaning: The request was to the IARCP64 or IARST64 FREE service and the trailer data at the end of the cell was detected as being overrun. If the overrun is sufficiently large, it will cause damage to the following cell. The caller is abnormally ended so they can fix the code to not use more storage than requested. Action: Determine whether the storage has been overrun or whether the trailer data was overlaid by some other code. Fix the code so it only uses the amount of storage requested. |
xx041Axx | Equate Symbol: IARST64AbendRsnCellNotInUse Meaning: The request was to the IARCP64 or IARST64 FREE service and the address of the storage passed in, is already in the freed state. This will happen when an application frees the storage twice. Action: Determine whether the current application is freeing the storage twice or whether it is using a cell that some other storage is freeing twice. |
xx041Bxx | Equate Symbol: IARST64AbendRsnNotOnCellBoundary Meaning: The request was to the IARCP64 or IARST64 FREE service and the address of the storage passed in is not on a cell boundary in the cell pool from which the GET request was satisfied. Action: When freeing storage with IARST64 REQUEST=FREE, make sure to specify the address that was returned by IARST64 REQUEST=GET. |
xx041Cxx | Equate Symbol: IARST64AbendRsnIARV64Error Meaning: During processing of IARST64 GET, a call to the IARV64 service for GETSTOR, GETCOMMON, PAGEFIX or PROTECT failed. The failing return code from IARV64 was placed in register 2 prior to the abend. The failing reason code from IARV64 was placed in register 3 prior to the abend. Action: Examine the return and reason code as documented under IARV64 to determine if the problem is one that you can resolve. |
xx0420xx | Equate Symbol: IARST64AbendRsnCphaNotQueue Meaning: The cell pool header authorized area was not queued to the owning task as expected. This could happen due to storage overlays or the caller bypassing the IARST64 macro and PCing directly to the service with incorrect input parameters. Action: Make sure the application is using the IARST64 macro to request storage. If the problem persists, collect a dump and contact IBM Service. |
xx0425xx | Equate Symbol: IARST64AbendRsnPoolNotInCallerKey Meaning: The request to IARST64 GET was against a storage pool that was not in the key of the caller. Normally this will abend with an 0C4, but if the pool is out of cells and is in storage that is not fetch-protected, the pool expand routine verifies that the caller may modify this storage pool. Action: You must be in a key that has the ability to modify the pool storage for the request to be processed. |
xx0426xx | Equate Symbol: IARST64AbendRsnPrimaryExtentOverlaid Meaning: The request to IARST64 or IARCP64 GET was against a storage pool where the primary extent control information has been overlaid. Action: Collect a dump and report the problem to IBM. |
xx0427xx | Equate Symbol: IARST64AbendRsnSecondaryExtentOverlaid Meaning: The request to IARST64 or IARCP64 GET was against a storage pool where the secondary extent control information has been overlaid. Action: Collect a dump and report the problem to IBM. |
xx0428xx | Equate Symbol: IARST64AbendRsnUnexpectedError Meaning: During processing of IARST64 GET an unexpected abend occurred. An SDUMP should have been generated. Action: Collect the dump and report the problem to IBM. |
xx0511xx | Equate Symbol: IARST64AbendRsnKeyGT7Common Meaning: The request to IARST64 GET was for common storage, but the requested or caller was greater than key 7. You cannot allocate common storage in key 8 or above. Action: Correct the key passed to IARST64 GET or change your request to get private storage. |
xx0512xx | Equate Symbol: IARST64AbendRsnGetMotherFromCmro Meaning: The request was to the IARST64 GET service and specified OWNINGTASK(MOTHER), but the caller is running on the CMRO task. You can't request the mother task be the storage owner from the CMRO task. Action: Either specify CMRO as the owner or specify RCT if you want the storage to persist across termination of the CMRO. |
xx0514xx | Equate Symbol: IARST64AbendRsnGetNotRctOrCmro Meaning: The request was to the IARST64 GET service for private storage and the caller was running in cross memory mode or SRB mode. In these environments the OWNINGTASK parameter must be set to RCT or CMRO. Neither of these was specified, so the request is failed. Action: Specify the OWNINGTASK parameter as RCT or CMRO. |
xx0515xx | Equate Symbol: IARST64AbendRsnGetCellSizeZero Meaning: The request was to the IARST64 GET service and specified a length of zero. Action: Specify a length between 1 and 128K. |
xx0516xx | Equate Symbol: IARST64AbendRsnGetNotAuth Meaning: The request was to the IARST64 GET service and specified a parameter that requires the caller to be running in key 0-7. The caller is not authorized to use authorized options of COMMON, DREF, FIXED, OWNINGTASK(RCT), CALLERKEY(NO) and Key00ToF0 set to a system key. Action: Either run the code in key 0-7 or do not use authorized options. |
xx0517xx | Equate Symbol: IARST64AbendRsnGetCellSizeTooBig Meaning: The request was to the IARST64 GET service and specified a length greater than 128K. Action: Specify a size between 1 and 128K. If larger storage is needed, consider using IARCP64 or IARV64 GETSTOR or GETCOMMON. |
xx0518xx | Equate Symbol: IARST64AbendRsnGetKeyNot9 Meaning: The request was to the IARST64 GET service and specified a CALLERKEY(NO) and a value for Key00ToF0 that was not key 9 and the caller is not authorized. Action: The only key that an unauthorized user can specify is key 9. Either request key 9 or change the specification to CALLERKEY(YES). |
xx0529xx | Equate Symbol: IARST64AbendRsnGetSizeTooBig Meaning: The call to the IARST64 GET service specified a cell size larger than the maximum size supported. Action: Specify a size between 1 and 128K. If a larger storage area is needed, consider using IARCP64 or IARV64 REQUEST=GETSTOR or GETCOMMON. |
xx052Axx | Equate Symbol: IARST64AbendRsnValidationError Meaning: The call to the IARST64 GET service detected a validation error when locating the storage pool to be used. Possible cause is storage overlay of the storage pool control block in the caller's key. Action: Collect a dump and report the problem to IBM. |
xx052Bxx | Equate Symbol: IARST64AbendRsnMemLimitNoUnauth Meaning: The call to the IARST64 GET service requested MEMLIMIT=NO, but is running unauthorized (key 8-15 and problem program state). Action: Either specify MEMLIMIT=YES or call from an authorized environment. |
xx052Cxx | Equate Symbol: IARST64AbendRsnCellLT4Gig Meaning: The call to the IARCP64 or IARST64 FREE service was passed a cell address less than 4 Gig, so it can't possibly be a valid cell address in a 64 bit cell pool. Action: Only pass a storage address that was obtained with IARCP64 or IARST64 GET. |
xx052Dxx | Equate Symbol: IARST64AbendRsnLocalSysAreaYesUnauth Meaning: The call to the IARST64 GET service requested LOCALSYSAREA=YES, but is running unauthorized (key 8-15 and problem program state). Action: Either specify LOCALSYSAREA=NO or CALL from an authorized environment. |
Macro IAXSERVC provides equate symbols for the return and reason codes.
The following table identifies the hexadecimal return and reason codes and the equate symbol associated with each reason code.
Hexadecimal Return Code | Hexadecimal Reason Code | Equate Symbol Meaning and Action |
---|---|---|
00 | None | Equate Symbol: IARST64Rc_OK Meaning: IARST64 request successful. Action: None required.
|
08 | None | Equate Symbol: IARST64Rc_Fail Meaning: Service failed due to running out of resources. Action: Refer to the action provided with the specific reason code. |
08 | xx0401xx | Equate Symbol: IARST64RsnMemlimitExhausted Meaning: The request to the IARST64 GET service was not able to obtain storage due to address space limits. Action: Either raise the MEMLIMIT of the address space or determine if private storage is being consumed excessively somewhere. |
08 | xx0402xx | Equate Symbol: IARST64Rsn64BitCommon Exhausted Meaning: The request to the IARST64 GET service was not able to obtain storage due to system limits. Action: For common storage, either raise the system limit on common (HVCOMMON) or determine if common storage is being consumed excessively somewhere. |
08 | xx0403xx | Equate Symbol: IARST64RsnMemlimitZero Meaning: The request to IARST64 GET was not able to obtain private storage due to the address space MEMLIMIT being set to zero. Action: Either set the MEMLIMIT of the address space to a non-zero value or if authorized, specify MEMLIMIT=NO on the IARST64 GET call to tell the service to bypass the address space MEMLIMIt. |
Obtain storage.
IARST64 REQUEST=GET,
AREAADDR=theAreaAddr,
SIZE=theAreaSize,
COMMON=NO,OWNINGTASK=CURRENT,
DUMP=LIKELSQA,FPROT=YES,TYPE=DREF,
CALLERKEY=NO,KEY00TOF0=theKEY,
FAILMODE=RC,
REGS=SAVE,
RETCODE=LRETCODE,RSNCODE=LRSNCODE,
(Place code to check return code or reason codes here.)
theAreaSize DC F‘32’
theKey DC X'70'
IAXSERVC
DYNAREA DSECT
LRETCODE DS F
LRSNCODE DS F
theAreaAddr DS D
Free the storage.
Operation: Save and restore registers.
IARST64 REQUEST=FREE,
AREAADDR=theAreaAddr,
REGS=SAVE,
(There is no return code or reason code from
IARST64 REQUEST=FREE.)
IAXSERVC
DYNAREA DSECT
LRETCODE DS F
LRSNCODE DS F
theAreaAddr DS D