IARST64 — 64-bit storage services

Description

Use IARST64 to request 64-bit Storage Services.

With IARST64, you can request services to:
  • Obtain storage (REQUEST=GET)
  • Return storage (REQUEST=FREE)
Note: There is diagnostic support for 64 bit cell pools, created by IARST64, in IPCS via the CBFORMAT command. In order to locate the cell pool of interest you need to follow the pointers from HP1, to HP2, to the CPHD. For common storage, the HP1 is located in the ECVT. CBF ECVT formats the ECVT, then does a FIND on HP1. Extract the address of the HP1 from the ECVT and CBF addrhp1 STR(HP1) formats the HP1. Each entry in the HP1 represents an attribute set (storage key, storage type(pageable, DREF, FIXED), and Fetch-Protection (ON or OFF)). The output from this command contains CBF commands for any connected HP2s. Select the CBF command of interest and run it to format the HP2. The HP2 consists of pointers to cell pool headers for different sizes. Choose the size of interest and select the command that looks like this to format the cell pool header:
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.

Environment

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:
  • The caller may be enabled or disabled for interrupts when requesting storage that is defined as COMMON=YES and TYPE=DREF or TYPE=FIXED.
  • For all other parameter combinations, the caller must be enabled for interrupts.
Locks:
For the GET request, the following locks may be held by the caller or must be obtainable by IARST64:
  • For requests with COMMON=NO, the locking restrictions are the same as for IARV64 REQUEST=GETSTOR.

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.

Programming requirements

None.

Restrictions

None.

Input register information

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.

Before issuing the IARST64 macro with REGS=SAVE, the caller must ensure that the following GPR contains the specified information:
Register
Contents
13
Address of a 144-byte area within which the 88 bytes beginning at offset 40 may be modified.
Before issuing the IARST64 macro, the caller does not have to place any information into any access register (AR) unless using it in register notation for a particular parameter, or using it as a base register.

Output register information

When control returns to the caller, the 64-bit GPRs contain:

For REQUEST=GET
Register
Contents
0
Reason code in the low 32 bits if the return code is not 0. Otherwise, used as a work register by the system.
1
The address of the obtained storage.
2-12
Unchanged if REGS=SAVE was specified, used as work registers by the system if REGS=USE was specified.
13
Unchanged.
14
Used as a work register by the system.
15
Return code in the low 32 bits.
For REQUEST=FREE
Register
Contents
0-1
Used as a work register by the system.
2-12
  • Unchanged, if REGS=SAVE was specified.
  • Used as work registers by the system, if REGS=USE was specified.
13
Unchanged.
14-15
Used as a work register by the system.
When control returns to the caller, the ARs contain:
Register
Contents
0-1
Used as work registers by the system.
2-13
Unchanged.
14-15
Used as work registers by the system.

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.

Performance implications

None.

Syntax

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).
   

Parameters

The parameters are explained as follows:

name
An optional symbol, starting in column 1, that is the name on the IARST64 macro invocation. The name must conform to the rules for an ordinary assembler language symbol.
REQUEST=GET
REQUEST=FREE
A required parameter that indicates the type of request.
REQUEST=GET
This parameter gets storage.
REQUEST=FREE
This parameter returns storage.
Note:
This request is unconditional, and will abnormally end if there is a problem. No return and reason codes are provided, so do not specify the RETCODE and RSNCODE parameters.
,SIZE=size
When REQUEST=GET is specified, a required input parameter that indicates the size of the storage to be obtained. The size can be anywhere between 1 and Start of change128KEnd of change bytes. The size is rounded up to a power of 2. So cell sizes are 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16,384, 32,768, 65,536 and Start of change131,072End of change bytes. The smallest cell size that contains the request is used. If the requested size is at least 4 bytes less than the rounded up cell size, a trailer will be added to check for storage overruns. For storage that is larger than what IARCP64 supports, consider using IARCP64 or IARV64 GETSTOR or GETCOMMON. Do not specify a value exceeding Start of change128KEnd of change or incorrect results may ensue.

To code: Specify the RS-type address, or address in register (2)-(12), of a fullword field, or specify a literal decimal value.

,AREAADDR=areaaddr
When REQUEST=GET is specified, an optional output parameter, of the obtained storage. If AREAADDR is not specified, the cell address is left in register 1.

To code: Specify the RS-type address, or address in register (2)-(12), of an eight-byte pointer field.

,COMMON=NO
,COMMON=YES
When REQUEST=GET is specified, a required parameter that indicates if the pool is to reside in common storage.
,COMMON=NO
This parameter indicates that the pool is not to reside in common storage.
,COMMON=YES
This parameter indicates that the pool is to reside in common storage.
,OWNINGTASK=CURRENT
,OWNINGTASK=MOTHER
,OWNINGTASK=IPT
,OWNINGTASK=JOBSTEP
,OWNINGTASK=CMRO
,OWNINGTASK=RCT
When COMMON=NO and REQUEST=GET are specified, a required parameter that indicates the task that is to be considered the owner.
,OWNINGTASK=CURRENT
This parameter indicates that the current task is to be the owner. Do not specify this unless the program is in task mode.
,OWNINGTASK=MOTHER
This parameter indicates that the mother task of the current task is to be the owner. If the current task is the cross-memory resource owning task, the request will fail. Do not specify this unless the program is in task mode.
,OWNINGTASK=IPT
This parameter indicates that the initial pthread task (subtask running under Unix System Services) is to be the owner. If the current task or mother task is not the IPT, then this will default to the current task as the owner. Do not specify this unless the program is in task mode.
,OWNINGTASK=JOBSTEP
This parameter indicates that the jobstep task of the current task (the task with TCB address in field TCBJSTCB of the current task's TCB) is to be the owner. Do not specify this unless the program is in task mode.
,OWNINGTASK=CMRO
This parameter indicates that the cross-memory resource-owning task is to be the owner.
,OWNINGTASK=RCT
This parameter indicates that the region control task (RCT) is to be the owner. You must be key 0-7 to request this option.
,MEMLIMIT=YES
,MEMLIMIT=NO
When COMMON=NO and REQUEST=GET are specified, an optional parameter that indicates whether MEMLIMIT applies if an additional 1M segment is obtained to satisfy the request. The default is MEMLIMIT=YES.
,MEMLIMIT=YES
This parameter indicates that MEMLIMIT applies.
,MEMLIMIT=NO
This parameter indicates that MEMLIMIT does not apply.
,LOCALSYSAREA=NO
,LOCALSYSAREA=YES
When Common=NO and request=GET are specified, an optional parameter that specifies whether this is an explicit allocation request for 64-bit virtual storage in the local system area. The LOCALSYSAREA parameter can be used only by callers running in supervisor state or with a PSW key 0-7. THE DEFAULT IS LOCALSYSAREA=NO.
,LOCALSYSAREA=NO
The request will not be satisfied from the local system area.
,LOCALSYSAREA=YES
The request is to be satisfied from the local system area. The storage obtained with this keyword will not be copied during Fork processing. The use of local system area storage does not preclude checkpoint or restart from succeeding.
,OWNER=HOME
,OWNER=PRIMARY
,OWNER=SECONDARY
,OWNER=SYSTEM
,OWNER=BYASID
When COMMON=YES and REQUEST=GET are specified, a required parameter that designates the owner of the storage.
,OWNER=HOME
This parameter indicates that the home address space is to be the owner.
,OWNER=PRIMARY
This parameter indicates that the primary address space is to be the owner.
,OWNER=SECONDARY
This parameter indicates that the secondary address space is to be the owner.
,OWNER=SYSTEM
This parameter indicates that the system is to be the owner. Use this only when there is no specific address space which can be considered the owner.
,OWNER=BYASID
This parameter indicates that the owner is the ASID specified by the OwningASID parameter.
,OWNINGASID=owningasid
When OWNER=BYASID, COMMON=YES and REQUEST=GET are specified, a required input parameter that specifies the ASID that is to be the owner. A value of 0 is equivalent to having specified OWNER=SYSTEM. Do not specify a value exceeding 32767 or incorrect results may ensue.

To code: Specify the RS-type address, or address in register (2)-(12), of a halfword field, or specify a literal decimal value.

,FPROT=YES
,FPROT=NO
When REQUEST=GET is specified, a required parameter that indicates if the pool storage is to be fetch-protected.
,FPROT=YES
This parameter indicates that the pool storage is to be fetch-protected.
,FPROT=NO
This parameter indicates that the pool storage is not to be fetch-protected.
,TYPE=PAGEABLE
,TYPE=DREF
,TYPE=FIXED
When REQUEST=GET is specified, a required parameter that indicates the type of storage for the pool.
,TYPE=PAGEABLE
This parameter indicates that the pool storage is to be pageable.
,TYPE=DREF
This parameter indicates that the pool storage is to be disabled-reference (DREF).
,TYPE=FIXED
This parameter indicates that the pool storage is to be page-fixed.
,CALLERKEY=YES
,CALLERKEY=NO
When REQUEST=GET is specified, a required parameter that indicates if the pool storage is to be in the key of the caller of the GET request.
,CALLERKEY=YES
This parameter indicates that the pool storage is to be in the key of the caller.
,CALLERKEY=NO
This parameter indicates that the pool storage is not to be in the key of the caller, but instead in the key specified by the Key00ToF0 parameter.
,KEY00TOF0=key00tof0
When CALLERKEY=NO and REQUEST=GET are specified, a required input parameter that indicates the key for the pool storage. The value should be in the range x'00' to x'F0' (i.e., the key 0-15 in the high 4 bits of the byte) for a caller that is key 0. For caller's in key 1-7, you can only request storage that is the same as the CALLERKEY, so there is no reason to use this parameter unless you request key x'90'. The value x'90' is the only accepted key for a caller that is key 8-15. Be sure that the value is a multiple of 16 within the required range or incorrect results may ensue.

To code: Specify the RS-type address, or address in register (2)-(12), of an one-byte field.

,FAILMODE=RC
,FAILMODE=ABEND
When REQUEST=GET is specified, a required parameter that indicates what to do if the GET request is not successful due to out of memory in the requested area conditions.
,FAILMODE=RC
This parameter returns with a failure return code.
Note: There will be cases for which an ABEND occurs regardless of the specification of FAILMODE=RC.
,FAILMODE=ABEND
This parameter abnormally ends.
,REGS=SAVE
,REGS=USE
When REQUEST=GET is specified, a required parameter that indicates how to deal with the registers.
,REGS=SAVE
This parameter saves and preserves the contents of 64-bit GPRs 2 - 12 starting at offset 40 in a 144 byte area pointed to by register 13.
,REGS=USE
This parameter indicates that you may use registers 2 - 12.
,AREANAME=areaname
,AREAADDR=areaaddr
When REQUEST=FREE is specified, a required input parameter.
,AREANAME=areaname
A parameter that is the area to free.

To code: Specify the RS-type address, or address in register (2)-(12), of a character field.

,AREAADDR=areaaddr
A parameter that contains the address of the area to free.

To code: Specify the RS-type address, or address in register (2)-(12), of an eight-byte pointer field.

,REGS=SAVE
,REGS=USE
When REQUEST=FREE is specified, a required parameter that indicates how to deal with the registers.
,REGS=SAVE
This parameter saves and preserves the contents of 64-bit GPRs 2 - 12 starting at offset 40 in a 144 byte area pointed to by register 13.
,REGS=USE
This parameter indicates that you may use registers 2 - 12.
,RETCODE=retcode
An optional output parameter into which the return code is to be copied from GPR 15. If you specify 15, GPR15, or R15 (within or without parentheses), the value will be left in GPR15.

To code: Specify the RS-type address of a fullword field, or register (2)-(12), (GPR15), (REG15), or (R15).

,RSNCODE=rsncode
An optional output parameter into which the reason code is to be copied from GPR 0. If you specify 0, 00, GPR0, GPR00, REG0, REG00, or R0 (within or without parentheses), the value will be left in GPR0.

To code: Specify the RS-type address of a fullword field, or register (0) or (2)-(12), (0), (GPR0), (GPR00), (REG0), (REG00), or (R0).

ABEND codes

The IARST64 caller might receive abend code X'DC4'. For detailed abend code information, see z/OS MVS System Codes.

In the following IARST64 abend reason codes, the bytes designated "xx" are for diagnostic purposes and have no significance to the external interface. Equate IARST64AbendRsncodeMask has been provided to let you build a mask to ignore those bytes.
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 Start of change128KEnd of change.

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 Start of change128KEnd of change.

Action: Specify a size between 1 and Start of change128KEnd of change. 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 Start of change128KEnd of change. 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.

Return and reason codes

When the IARST64 macro returns control to your program:
  • GPR 15 (and retcode, when you code RETCODE) contains a return code.
  • When the value in GPR 15 is not zero, GPR 0 (and rsncode, when you code RSNCODE) contains a reason code.

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.

Table 1. Return and Reason Codes for the IARST64 Macro
Hexadecimal Return Code Hexadecimal Reason Code Equate Symbol Meaning and Action
00 None

Equate Symbol: IARST64Rc_OK

Meaning: IARST64 request successful.

Action: None required.
GET
Meaning: storage obtained of requested size and attributes Action: None required.
FREE
Meaning: storage freed 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.

Examples

Example 1

Obtain storage.

Operations:
  • 32-byte area
  • In private storage
  • With an owning task of the current task
  • Dumped similar to "LSQA" processing (triggered by DREF or FIXED)
  • Fetch-protected
  • DREF storage
  • In Key 7
  • Provide Return Code if the request is not successful
  • Save and restore registers
The code is as follows:

         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

Example 2

Free the storage.

Operation: Save and restore registers.

The code is as follows:

         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