REQUEST=GETCOMMON option of IARV64

Use REQUEST=GETCOMMON to create a 64-bit common memory object.

Environment

The requirements for the caller are:

Environmental factor Requirement
Minimum authorization:

The caller must be running in supervisor state and with PSW key 0-7

Dispatchable unit mode: Task or SRB
Cross memory mode: Any PASN, any HASN, any SASN
AMODE: 31- or 64-bit
ASC mode: Primary or access register (AR)
Interrupt status:

Enabled or disabled for I/O and external interrupts Callers that specify PAGEFRAMESIZE=1M or PAGEFRAMESIZE=MAX must be enabled

Locks:

For enabled callers no requirement. For disabled callers no spin locks higher than the RSM locks can be held

Control parameters: Control parameters must be in the primary address space and can reside both below and above the bar.

Programming requirements

None.

Restrictions

This macro supports multiple versions. Some keywords are unique to certain versions. See PLISTVER parameter description.

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=GETCOMMON 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=GETCOMMON  
   
  ,COND=NO Default: COND=NO
  ,COND=YES  
   
  ,SEGMENTS=segments segments: RS-type address or address in register (2) - (12).
  ,PAGEFRAMESIZE=4K Default: PAGEFRAMESIZE=4K
    ,PAGEFRAMESIZE=1MEG  
    ,PAGEFRAMESIZE=MAX  
    ,PAGEFRAMESIZE=PAGEABLE1MEG  
    ,PAGEFRAMESIZE=DREF1MEG  
    ,TYPE=PAGEABLE Default: TYPE=PAGEABLE when one of the following is specified:
  • PAGEFRAMESIZE=PAGEABLE1MEG
  • PAGEFRAMESIZE=4K
  • PAGEFRAMESIZE=MAX and the memory object is backed with 4 KB-page frames.
When PAGEFRAMESIZE=DREF1MEG is specified, the default value is TYPE=DREF. If PAGEFRAMESIZE=1MEG or PAGEFRAMESIZE=MAX is specified and the memory object is backed with 1 MB-page frames, the 1 MB-pages backing this memory object are fixed.
    ,TYPE=DREF  
   
  ,UNITS=units units: Size of the memory object, which is the number of units specified by UNITSIZE.
    ,UNITSIZE=1M Specifies a 1 MB unit size.
      ,PAGEFRAMESIZE=4K|1M If UNITSIZE=1M is specified, a PAGEFRAMESIZE of 4K or 1M must be specified. There is no default value.
    ,TYPE=FIXED  
    ,TYPE=DREF  
    ,TYPE=PAGEABLE  
   
  ,KEY=key key: RS-type address or address in register (2) - (12).
  ,KEY=CALLERKEY Default: KEY=CALLERKEY
   
  ,FPROT=YES Default: FPROT=YES
  ,FPROT=NO  
   
  ,MOTKNSOURCE=USER Default: MOTKNSOURCE=USER
  ,MOTKN=motkn motkn: RS-type address or address in register (2) – (12).
  ,MOTKNSOURCE=SYSTEM  
  ,OUTMOTKN=outmotkn outmotkn: RS-type address or address in register (2) – (12).
   
  ,OWNERCOM=HOME Default: OWNER=HOME
  ,OWNERCOM=PRIMARY  
  ,OWNERCOM=SYSTEM  
  ,OWNERCOM=BYASID  
   ,OWNERASID=ownerasid  
   ,OWNERASID=HOME  
   
  ,DUMP=LIKECSA Default: DUMP=LIKECSA when TYPE=PAGEABLE
  ,DUMP=LIKESQA Default: DUMP=LIKESQA when TYPE=DREF
  ,DUMP=NO  
  ,DUMP=BYOPTIONVALUE  
    ,OPTIONVALUE=optionvalue option: RS-type address or address in register (2) - (12).
   
  ,DETACHFIXED=NO Default: DETACHFIXED=NO
  ,DETACHFIXED=YES  
  ,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_VER Default: PLISTVER=IMPLIED_VERSION
  ,PLISTVER=MAX  
  ,PLISTVER=0, 1, 2, 3, 4, 5  
   
  ,MF=S Default: MF=S
  ,MF=(L,list addr) (L,list addr): RS-type address or register (1) - (12).
  ,MF=(L,list addr,attr)  
  ,MF=(L,list addr,OD)  
  ,MF=(E,list addr)  
  ,MF=(E,list addr,COMPETE)  
   

Parameters

The REQUEST=GETCOMMON option of the IARV64 macro is written 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=GETCOMMON
A required parameter. REQUEST=GETCOMMON creates a 64-bit common memory object.
,COND=NO
,COND=YES
An optional keyword input that specifies whether the request is unconditional or conditional. When you code COND=YES and there is insufficient storage to satisfy the request, instead of the request being abnormally ended, the request will complete and a return code will be set to indicate that the request could not be completed successfully. 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.
,KEY=key
,KEY=CALLERKEY
An optional input parameter that specifies the storage key to be assigned to the memory object. The key must be in bits 0-3 of the specified byte. Bits 4-7 are ignored. Only keys 0-7 can be specified.

If the key is not specified, the storage key of the memory object is the same as the caller's PSW key. The default is CALLERKEY.

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

,FPROT=YES
,FPROT=NO
An optional keyword 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.
,MOTKNSOURCE=USER
,MOTKNSOURCE=SYSTEM
An optional input parameter that indicates the source of the memory object token to be associated with this memory object. The default is USER.
,MOTKNSOURCE=USER
The user provides the memory object token.
,MOTKN=motkn
The name of an optional doubleword integer input that identifies the token to be associated with the memory object. This must be a token that was returned by the system on a previous GETCOMMON request by the OUTMOTKN keyword. If you specify no user token, the default is that no user token is supplied to associate this memory object with others.
,MOTKNSOURCE=SYSTEM
The system provides the memory object token.
,OUTMOTKN=xoutmotkn
The name of a required doubleword integer output in which the system returns the token associated with this memory object. This token can be used on subsequent GETCOMMON requests as a user-supplied token in order to associate other memory objects with this token. This token can be used on subsequent DETACH requests in order to free all the memory objects that have been associated with this token.
Usage notes of the MOTKNSOURCE parameter on an IARV64 REQUEST(GETCOMMON) request:
  • If you want a system-generated token to be returned, invoke:
    IARV64 REQUEST=GETCOMMON,MOTKNSOURCE=SYSTEM,OUTMOTKN=mytoken
  • If you want to use the returned token on subsequent IARV64 GETCOMMON requests in order to associate other memory objects with the same token, invoke:
    IARV64 REQUEST=GETCOMMON,MOTKNSOURCE=USER,MOTKN=mytoken
  • If you want to use the returned token on a DETACH request in order to detach all memory objects that are associated with that token, invoke:
    IARV64 REQUEST=DETACH,MATCH=MOTOKEN,MOTKN=mytoken,
           AFFINITY=SYSTEM,V64COMMON=YES
,SEGMENTS=segments

SEGMENTS and UNITS are mutually exclusive keys. This set is required; only one key can be specified.

A required input parameter that specifies the size of the memory object requested, in megabytes. This must be a nonzero 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.

,PAGEFRAMESIZE=4K
,PAGEFRAMESIZE=1MEG
,PAGEFRAMESIZE=MAX
,PAGEFRAMESIZE=DREF1MEG
,PAGEFRAMESIZE=PAGEABLE1MEG
An optional input parameter that specifies the size of the page frames to back the virtual storage mapped by the allocated memory object.
,PAGEFRAMESIZE=4K
The memory object should be backed by 4 KB-page frames. The default value is PAGEFRAMESIZE=4K.
,PAGEFRAMESIZE=1MEG
The memory object should be backed by 1 MB-page frames.
,PAGEFRAMESIZE=MAX
The memory object should be backed by the largest page frame size supported but if the request cannot be backed by the largest frame size due to the availability of large page frames, then the request will backed by 4 KB-page frames. 1 megabyte page frames are backed at allocation time and ca not be paged out to AUX. 4 KB-page frames are backed at first reference and can be paged out to AUX if TYPE=DREF is not specified or can not be paged out to AUX if TYPE=DREF is specified.
,PAGEFRAMESIZE=PAGEABLE1MEG
The memory object is backed by pageable 1 MB-page frames at first reference, unless none are available. If none are available, the object is backed by 4 KB-page frames.
,PAGEFRAMESIZE=DREF1MEG
The memory object is backed by pageable 1 MB-page frames at first reference, unless none are available. If none are available, the object is backed by 4 KB-page frames.
,TYPE=PAGEABLE
,TYPE=DREF
An optional input parameter that specifies the type of storage that is requested. The default value is TYPE=PAGEABLE when one of the following parameters is specified:
  • PAGEFRAMESIZE=PAGEABLE1MEG
  • PAGEFRAMESIZE=4K
  • PAGEFRAMESIZE=MAX and the memory object is backed with 4 KB-page frames.

The default value is TYPE=DREF when PAGEFRAMESIZE=DREF1MEG is specified. If PAGEFRAMESIZE=1MEG or PAGEFRAMESIZE=MAX is specified and the memory object is backed with 1 MB-page frames, the 1 MB-pages backing this memory object are fixed.

Note:
  1. When the memory object is backed by 4 KB-page frames, the 4 KB-pages backing this memory object are pageable if TYPE=DREF is not specified; the 4 KB-pages are fixed if TYPE=DREF is specified. The 4 KB-pages are backed at first reference and can and can only be paged out to AUX if TYPE=DREF is not specified.
  2. When the memory object is backed by 1 MB-page frames as a result of PAGEFRAMESIZE=PAGEABLE1MEG or PAGEFRAMESIZE=DREF1MEG being specified, the 1 MB-pages backing this memory object are pageable if PAGEABLE1MEG is specified or fixed if DREF1MEG is specified. Pageable 1 MB-pages are backed at first reference and can be paged out to AUX. DREF 1 MB-pages are backed at first reference and are fixed—they cannot be paged out to AUX.
  3. When the memory object is backed by 1 MB-page frames because PAGEFRAMESIZE=1MEG or PAGEFRAMSIZE=MAX has been specified, the 1 MB-pages backing this memory object are fixed. Pages are backed at allocation time and cannot be paged out to AUX.
,TYPE=PAGEABLE
Pages backing this memory object are pageable. Pages are backed at first reference and can be paged out to AUX. virtual address ranges within the memory object can be explicitly fixed after allocation by using the IARV64 REQUEST=PAGEFIX request.
,TYPE=DREF
The memory object is referenced while running disabled. Note that the DREF attribute applies to the entire memory object. Pages are backed in real at first reference. Pages belonging to memory objects with the TYPE=DREF attribute remain in real and are never paged out to AUX.
,UNITS=units

UNITS and SEGMENTS are mutually exclusive keys. This set is required; only one key can be specified.

A required input parameter that specifies the size of the memory object as a number of units specified by the UNITSIZE parameter. This must be a nonzero value. The amount of storage requested that is not in the guard state is counted towards the MEMLIMIT for the address space where the memory object will be created. UNITS belongs to a set of mutually exclusive keys. This set is required; only one key can be specified.

,TYPE=PAGEABLE
,TYPE=DREF
,TYPE=FIXED
A required input parameter that specifies the type of requested storage.
,TYPE=PAGEABLE
Pages backing this memory object are pageable. Pages are backed at first reference and can be paged out to auxiliary storage. Virtual address ranges within the memory object can be explicitly fixed after allocation by using the IARV64 REQUEST=PAGEFIX request. TYPE=PAGEABLE is not valid with PAGEFRAMESIZE=2G.
,TYPE=DREF
Pages are backed in real memory at first reference, unless DREF storage is not available, in which case the program is ABENDed. Once backed, pages belonging to memory objects of TYPE=DREF remain in real storage and are never paged out to auxiliary storage. The memory object can be referenced while running disabled. The DREF attribute applies to the entire memory object. TYPE=DREF is not valid with PAGEFRAMESIZE=2G.
,TYPE=FIXED
Pages are backed in real storage immediately, unless fixed storage is not immediately available, in which case the request fails. Pages belonging to memory objects of TYPE=FIXED remain in real storage and are never be paged out to auxiliary storage. The memory object can be referenced while running disabled. The FIXED attribute applies to the entire memory object when it is allocated. TYPE=FIXED is not valid with PAGEFRAMESIZE=4K.

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

,UNITSIZE=1M
,UNITSIZE=2G
A required input parameter that specifies the size for the UNITS parameter: either 1 MB or 2 GB.
,UNITSIZE=1M
Specifies that the memory object is in 1 MB units. For example, a request for UNITS=3 with UNITSIZE=1M is a request for three megabytes of virtual storage starting on a 1 MB boundary. When UNITSIZE=1M is specified, one of the following PAGEFRAMESIZE values must also be specified:
PAGEFRAMESIZE=4K
PAGEFRAMESIZE=1M
A required input parameter that specifies the size of the page frames used to back the virtual storage mapped by the allocated memory object.
PAGEFRAMESIZE=4K
Specifies to back the memory object with 4 KB-page frames of the specified TYPE, when TYPE=PAGEABLE or TYPE=DREF is requested. TYPE=FIXED is not supported.
PAGEFRAMESIZE=1M
Specifies to back the memory object by one-megabyte (1 MB) page frames of the specified TYPE. If 1 MB-page frames are not supported or not available, the system attempts to back the memory object at a smaller page frame size of the specified TYPE, when TYPE=PAGEABLE or TYPE=DREF is requested. A TYPE=FIXED request fails if there are no available pages in the requested PAGEFRAMESIZE.
,UNITSIZE=2G
Specifies that the memory object is in two-gigabyte (2G) units. For example, a request for UNITS=3 with UNITSIZE=2G is a request for six gigabytes of virtual storage starting on a 2 GB boundary.
PAGEFRAMESIZE=4K|1M
A required input parameter that specifies the size of the page frames that back the virtual storage mapped by the allocated memory object.
PAGEFRAMESIZE=4K
Specifies to back the memory object by 4 KB-page frames of the specified TYPE, when TYPE=PAGEABLE or TYPE=DREF is requested. TYPE=FIXED is not supported with this value.
PAGEFRAMESIZE=1M
Specifies to back the memory object by one-megabyte (1 MB) page frames of the specified TYPE. If 1 MB-page frames are not supported or not available when TYPE=PAGEABLE or TYPE=DREF is requested, the system attempts to back the memory object using a smaller page frame size of the specified TYPE. A TYPE=FIXED request fails if there are no available pages in the requested PAGEFRAMESIZE.
,OWNERCOM=HOME
,OWNERCOM=PRIMARY
,OWNERCOM=SYSTEM
,OWNERCOM=BYASID
An optional input parameter that specifies the entity to which the system will assign ownership of the 64-bit common memory object. The system uses this ownership information to track the use of 64-bit common storage for diagnostic purposes. The default is OWNERCOM=HOME.
,OWNERCOM=HOME
The home address space will be assigned as the owner of the 64-bit common memory object.
,OWNERCOM=PRIMARY
The primary address space will be assigned as the owner of the 64-bit common memory object.
,OWNERCOM=SYSTEM
The system (the 64-bit common memory object is not associated with an address space) will be assigned as the owner of the 64-bit memory object.
,OWNER=BYASID
The address space specified by OWNERASID will be assigned as the owner of the 64-bit common memory object.
,OWNERASID=0
,OWNERASID=ownerasid
An optional input parameter that specifies the ASID of the address space that will own the 64-bit common memory object for tracking purposes. The default is OWNERASID=0.
OWNERASID=0
This parameter indicates that the system is assigned as the owner of the 64-bit memory object.
,OWNERASID=ownerasid
This is the name (RS-Type), or address in register (2)-(12), of an optional halfword input that contains the address space identifier (ASID) to be designated as the owner of the 64-bit common memory object for storage tracking purposes.
,DUMP=LIKECSA
,DUMP=LIKESQA
,DUMP=NO
,DUMP=BYOPTIONVALUE
An optional input parameter that specifies whether the 64-bit common memory object is included in an SVC dump when CSA or SQA is specified on SDATA. When TYPE=PAGEABLE is specified on IARV64 GETCOMMON the default is DUMP=LIKECSA. When TYPE=DREF is specified on IARV64 GETCOMMON the default is DUMP=LIKESQA.
,DUMP=LIKECSA
The 64-bit common memory object is included in an SVC dump when CSA is specified on SDATA.
,DUMP=LIKESQA
The 64-bit common memory object is included in an SVC dump when SQA is specified on SDATA.
,DUMP=NO
The 64-bit common memory object is not included in an SVC dump when either CSA or SQA is specified on SDATA.
DUMP=BYOPTIONVALUE
The 64-bit common memory object is dumped according to the option specified by the OPTIONVALUE keyword.
,OPTIONVALUE=option
This parameter is the name (RS-Type), or address in register (2)-(12), of a required one-byte integer input that contains one of the following:
  • XMFCTRL_XDUMP_NO - (X’01’) – this is equivalent to DUMP=NO
  • XMFCTRL_XDUMP_LIKESQA - (X’02’)– this is equivalent to DUMP=LIKESQA
  • XMFCTRL_XDUMP_LIKECSA - (X’03’)– this is equivalent to DUMP=LIKECSA
,DETACHFIXED=NO
,DETACHFIXED=YES
An optional input parameter that specifies whether the memory object can be detached when it contains fixed pages at the time of the DETACH request. The default value for DETACHFIXED is NO.
DETACHFIXED=NO
The memory object will not be detached if it has any fixed pages when it is detached.
DETACHFIXED=YES
The memory object will be detached even if some or all the pages of the memory object are fixed.
,ORIGIN=origin
A required output parameter that contains the lowest address of the memory object.
Note: 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, 2, 3, 4, 5
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 suggests 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, supports all parameters except those specifically referenced in higher versions.
  • 1, supports both the following parameters and parameters from version 0:
    • CONVERTSIZE64
    • CONVERTSTART
    • GUARDSIZE64
    • GETSHARED
  • 2, supports both the following parameters and parameters from version 0 and 1:
    • AMOUNTSIZE
    • DETACHFIXED
    • DOAUTHCHECKS
    • DUMP
    • DUMPPRIORITY
    • DUMPPROTOCOL
    • LOCALSYSAREA
    • MEMLIMIT
    • OPTIONVALUE
    • ORDER
    • OWNERASID
    • OWNERCOM
    • TYPE
    • UNLOCKED
    • USERTOKEN
    • V64COMMON
  • 3, supports both the following parameters and parameters from versions 0, 1, 2:
    • ATTRIBUTE
    • OWNERJOBNAME
    • TRACKINFO
  • 4, supports both the following parameter and parameters from versions 0, 1, 2, 3:
    • DMAPAGETABLE
  • 5, supports both the following parameters and parameters from versions 0, 1, 2, 3, 4:
    • UNITS
    • UNITSIZE
To code: Specify one of the following:
  • IMPLIED_VERSION
  • MAX
  • A decimal value of 0, 1, 2, 3, 4 or 5
,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)
,MF=(M,list addr,)
,MF=(M,list addr,COMPLETE)
,MF=(M,list addr,NOCHECK)
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.

Use MF=M together with the list and execute forms of the macro for service routines that need to provide different options according to user-provided input. Use the list form to define a storage area; use the modify form to set the appropriate options; then use the execute form to call the service.

IBM recommends that you use the modify and execute forms in the following order:
  • Use MF=(M,list_addr,COMPLETE), specifying appropriate parameters, including all required ones.
  • Use MF=(M,list_addr,NOCHECK), specifying the parameters you want to change.
  • Use MF=(E,list_addr,NOCHECK), to execute the macro.
,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.
,NOCHECK
This parameter specifies that the system is not to check for required parameters and is not to supply defaults for omitted optional parameters.