REQUEST=GETSTOR option of IARV64

REQUEST=GETSTOR allows you to create a memory object. To avoid an abend for exceeding a MEMLIMIT, specify the COND=YES parameter.

Environment

The requirements for the caller are:

Environmental factor Requirement
Minimum authorization: Problem state and PSW key 8-15.
Dispatchable unit mode: Task or SRB
Cross memory mode: Any PASN, any HASN, any SASN

A problem state caller running in PSW key 8-15 can use GETSTOR/DETACH only when the primary address space is the home address space.

AMODE: 31- or 64-bit
ASC mode: Primary or access register (AR)
Interrupt status: Enabled for I/O and external interrupts
Locks: No locks may be held.
Control parameters: Control parameters must be in the primary address space.

Programming requirements

None.

Restrictions

No data space ALETs can be specified.

Input register information

Before issuing the IARV64 macro, the caller does not have to place any information into any register 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 GPRs contain:
Register
Contents
0
Reason code, if GPR 15 is non-zero
1
Used as a work register by the system
2-13
Unchanged
14
Used as a work register by the system
15
Return code
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 REQUEST=GETSTOR option of the IARV64 macro is written as follows:

Syntax Description
   
   name name: symbol. Begin name in column 1.
   
One or more blanks must precede IARV64.
   
IARV64  
   
One or more blanks must follow IARV64.
   
REQUEST=GETSTOR  
   
  ,COND=NO Default: COND=NO
  ,COND=YES  
   
,SEGMENTS=segments segments: RS-type address or address in register (2) - (12).
   
  ,FPROT=YES Default: FPROT=YES
  ,FPROT=NO  
   
  ,SVCDUMPRGN=YES Default: SVCDUMPRGN=YES
  ,SVCDUMPRGN=NO  
   
  ,USERTKN=usertkn usertkn: RS-type address or address in register (2) - (12).
  ,USERTKN=NO_USERTKN Default: USERTKN=NO_USERTKN
   
  ,GUARDSIZE=guardsize guardsize: RS-type address or address in register (2) - (12).
  ,GUARDSIZE=0 Default: GUARDSIZE=0
  ,GUARDSIZE64=guardsize64 guardsize64: RS-type address or address in register (2) - (12).
  ,GUARDSIZE64=0 Default: GUARDSIZE64=0
   
  ,GUARDLOC=LOW Default: GUARDLOC=LOW
  ,GUARDLOC=HIGH  
   
  ,TTOKEN=ttoken ttoken: RS-type address or address in register (2) - (12).
  ,TTOKEN=NO_TTOKEN Default: TTOKEN=NO_TTOKEN
   
,ORIGIN=origin origin: RS-type address or address in register (2) - (12).
   
  ,RETCODE=retcode retcode: RS-type address or register (2) - (12).
   
  ,RSNCODE=rsncode rsncode: RS-type address or register (2) - (12).
   
  ,PLISTVER=IMPLIED_VERSION Default: PLISTVER=IMPLIED_VERSION
  ,PLISTVER=MAX  
  ,PLISTVER=0, 1  
   
  ,MF=S Default: MF=S
  ,MF=(L,list addr) list addr: RS-type address or register (1) - (12)
  ,MF=(L,list addr,attr)  
  ,MF=(L,list addr,0D)  
  ,MF=(E,list addr)  

  ,MF=(E,list addr,COMPLETE)

 
   

Parameters

The parameters are explained as follows:

name
An optional symbol, starting in column 1, that is the name on the IARV64 macro invocation. The name must conform to the rules for an ordinary assembler language symbol.
REQUEST=GETSTOR
A required parameter. REQUEST=GETSTOR creates a memory object. Problem state routines running in PSW key 8-15 can use GETSTOR only when primary = home. When the memory object owner terminates, the memory object will be freed.
,COND=NO
,COND=YES
An optional parameter that specifies whether the request is unconditional or conditional. In all cases the request will be abnormally ended for invalid requests, including violation of environmental restrictions. The default is COND=NO.
,COND=NO
The request is unconditional. The request will be abnormally ended when the request cannot be satisfied.
,COND=YES
The request is conditional. The request will not be abnormally ended for resource unavailability.
,SEGMENTS=segments
A required input parameter that specifies the size of the memory object requested in megabytes. This must be a non-zero value. The amount of storage requested that is not in the guard state is charged against the MEMLIMIT for the address space where the memory object is to be created.

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

,FPROT=YES
,FPROT=NO
An optional parameter that specifies whether the memory object should be fetch protected. The default is FPROT=YES.
,FPROT=YES
The entire memory object will be fetch protected. A program must have a PSW key that matches the storage key of the memory object (or have PSW key 0) to reference data in the memory object.
,FPROT=NO
The memory object will not be fetch protected.
,SVCDUMPRGN=YES
,SVCDUMPRGN=NO
An optional parameter that specifies whether the memory object should be included in an SVC dump when region is requested. The default is SVCDUMPRGN=YES.
,SVCDUMPRGN=YES
An SVC dump will include in its virtual storage capture for the owning address space the usable area of the memory object whenever SDATA=RGN is specified.
,SVCDUMPRGN=NO
The SVC dump option SDATA=RGN will not include the virtual storage of this memory object in the dump.
,USERTKN=usertkn
,USERTKN=NO_USERTKN
An optional input parameter that identifies the user token to be associated with the memory object. This can be used on a later DETACH request to free all memory objects associated with this value.

To avoid inadvertent collisions in the values specified, the left word (bits 0-31) of the user token must be binary zeros for a problem state program. The system enforces this requirement. The right word (bits 32-63) should represent the virtual address of some storage related to the caller, which could be a control block address, an entry point address, and so on, which is used as an application choice.

The convention for supervisor state program is that the left word (bits 0-31) should represent an address of some storage related to the caller. The system enforces the rule that the left word is non-zero for supervisor state callers. The format for the right word (bits 32-63) is a choice left to the caller.

If you specify NO_USERTKN, the default is that no user token is supplied to associate this memory object with others. The default is NO_USERTKN.

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

,GUARDSIZE=guardsize
,GUARDSIZE=0

GUARDSIZE and GUARDSIZE64 are mutually exclusive keys. This set is optional; only one key may be specified. A fullword integer input parameter that indicates the number of megabytes of guard area to be created at the high or low end of the memory object. Guard areas cannot be referenced and when referenced will cause a program check. Guard area does not count against the MEMLIMIT. A guard area can be reduced through CHANGEGUARD CONVERT=FROMGUARD.

GUARDSIZE must not be larger than the size of the memory object. The default is 0.

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

,GUARDSIZE64=guardsize64
,GUARDSIZE64=0

GUARDSIZE64 belongs to a set of mutually exclusive keys. This set is optional; only one key may be specified. A doubleword integer input parameter that indicates the number of megabytes of guard area to be created at the high or low end of the memory object. Guard areas cannot be referenced and when referenced will cause a program check. Guard area does not count against the MEMLIMIT. A guard area can be reduced through CHANGEGUARD CONVERT=FROMGUARD.

GUARDSIZE64 must not be larger than the size of the memory object. The default is 0.

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

,GUARDLOC=LOW
,GUARDLOC=HIGH
An optional parameter that specifies whether the guard location is at the low virtual end of the memory object or the high virtual end. The default is GUARDLOC=LOW.
,GUARDLOC=LOW
The guard areas are created starting from the origin of the memory object, that is, from the low virtual end.
,GUARDLOC=HIGH
The guard areas are created at the end of the memory object, that is, at the high virtual end.
,TTOKEN=ttoken
,TTOKEN=NO_TTOKEN
An optional input parameter that identifies the task to assume ownership of the memory object. The TTOKEN is returned by the TCBTOKEN macro.

If TTOKEN is specified, the task identified by the TTOKEN becomes the owner of the memory object. If TTOKEN is not specified, the currently dispatched task becomes the owner of the memory object.

The TTOKEN parameter must be used by an caller that is an SRB.

When the TTOKEN parameter is used by problem state program with PSW key 8 - 15, the target task must represent the calling task OR the jobstep task for the calling task OR the mother task. A caller cannot assign ownership to a task above the jobstep task.

A memory object will be freed when its owning task terminates.

If the TTOKEN parameter is not specified, and the caller is a task (rather than an SRB), the currently dispatched task will become the owner of the memory object. An SRB will be abnormally ended if the TTOKEN parameter does not specify a valid TTOKEN. The default is NO_TTOKEN.

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

,ORIGIN=origin
A required output parameter that contains the lowest address of the memory object. Note that when GUARDLOC=LOW is specified, the lowest address will point to a guard area, which will cause an ABEND if referenced. For GUARDLOC=LOW, the first usable area is the origin plus the size of the guard area.

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

,RETCODE=retcode
An optional output parameter into which the return code is to be copied from GPR 15.

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

,RSNCODE=rsncode
An optional output parameter into which the reason code is to be copied from GPR 0.

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

,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX
,PLISTVER=0, 1
An optional input parameter that specifies the version of the macro. PLISTVER determines which parameter list the system generates. PLISTVER is an optional input parameter on all forms of the macro, including the list form. When using PLISTVER, specify it on all macro forms used for a request and with the same value on all of the macro forms. The values are:
  • IMPLIED_VERSION, which is the lowest version that allows all parameters specified on the request to be processed. If you omit the PLISTVER parameter, IMPLIED_VERSION is the default.
  • MAX, if you want the parameter list to be the largest size currently possible. This size might grow from release to release and affect the amount of storage that your program needs.

    If you can tolerate the size change, IBM® recommends that you always specify PLISTVER=MAX on the list form of the macro. Specifying MAX ensures that the list-form parameter list is always long enough to hold all the parameters you might specify on the execute form, when both are assembled with the same level of the system. In this way, MAX ensures that the parameter list does not overwrite nearby storage.

  • 0, if you use the currently available parameters.
  • 1, supports both the following parameters and parameters from version 0:
    • CONVERTSIZE64
    • CONVERTSTART
    • GUARDSIZE64
To code: Specify one of the following:
  • IMPLIED_VERSION
  • MAX
  • A decimal value of 0 or 1
,MF=S
,MF=(L,list addr)
,MF=(L,list addr,attr)
,MF=(L,list addr,0D)
,MF=(E,list addr)
,MF=(E,list addr,COMPLETE)
An optional input parameter that specifies the macro form.

Use MF=S to specify the standard form of the macro, which builds an inline parameter list and generates the macro invocation to transfer control to the service. MF=S is the default.

Use MF=L to specify the list form of the macro. Use the list form together with the execute form of the macro for applications that require reentrant code. The list form defines an area of storage that the execute form uses to store the parameters. Only the PLISTVER parameter may be coded with the list form of the macro.

Use MF=E to specify the execute form of the macro. Use the execute form together with the list form of the macro for applications that require reentrant code. The execute form of the macro stores the parameters into the storage area defined by the list form, and generates the macro invocation to transfer control to the service.

,list addr
The name of a storage area to contain the parameters. For MF=S and MF=E, this can be an RS-type address or an address in register (1)-(12).
,attr
An optional 1- to 60-character input string that you use to force boundary alignment of the parameter list. Use a value of 0F to force the parameter list to a word boundary, or 0D to force the parameter list to a doubleword boundary. If you do not code attr, the system provides a value of 0D.
,COMPLETE
Specifies that the system is to check for required parameters and supply defaults for omitted optional parameters.