Use REQUEST=GETCOMMON to create a 64-bit common memory object.
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. |
None.
This macro supports multiple versions. Some keywords are unique to certain versions. See PLISTVER parameter description.
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.
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 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:
|
,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) | |
The REQUEST=GETCOMMON option of the IARV64 macro is written as follows:
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.
IARV64 REQUEST=GETCOMMON,MOTKNSOURCE=SYSTEM,OUTMOTKN=mytoken
IARV64 REQUEST=GETCOMMON,MOTKNSOURCE=USER,MOTKN=mytoken
IARV64 REQUEST=DETACH,MATCH=MOTOKEN,MOTKN=mytoken,
AFFINITY=SYSTEM,V64COMMON=YES
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.
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.
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.
To code: Specify the RS-type address, or address in register (2)-(12), of a doubleword 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).
To code: Specify the RS-type address of a fullword field, or register (2) - (12).
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.
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.