REQUEST=GETSHARED option of IARV64
REQUEST=GETSHARED creates a memory object that can be shared across multiple address spaces.
Environment
The requirements for the caller are:
| Environmental factor | Requirement |
|---|---|
| Minimum authorization: |
The caller must be running in supervisor state or with PSW key 0-7 to use the following parameters: |
| 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 for I/O and external interrupts |
| Locks: | No locks may 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
- 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
- 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=GETSHARED 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=GETSHARED | |
| ,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=PAGEABLE1MEG | |
| ,KEY=key | key: RS-type address or address in register (2) - (12). |
| ,KEY=CALLERKEY | Default: KEY=CALLERKEY |
| ,FPROT=YES | Default: FPROT=YES |
| ,FPROT=NO | |
,SENSITIVE=UNKNOWN![]() |
Default: SENSITIVE=UNKNOWN![]() |
,SENSITIVE=YES![]() |
![]() |
,SENSITIVE=NO![]() |
![]() |
![]() |
![]() |
| ,USERTKN=usertkn | usertkn: RS-type address or address in register (2) - (12). |
| ,CHANGEACCESS=LOCAL | Default: CHANGEACCESS=LOCAL |
| ,CHANGEACCESS=GLOBAL | |
| ,ALETVALUE=aletvalue | aletvalue: RS-type address or address in register (2) – (12). |
| ,ALETVALUE=0 | Default: ALETVALUE=0 |
| ,ORIGIN=origin | origin: RS-type address or address in register (2) - (12). |
| ,SADMP=DEFAULT |
Default: SADMP=DEFAULT
|
| ,SADMP=YES | |
| ,SADMP=NO | |
| ,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, 2, 3 or 4 | |
| ,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=GETSHARED
- REQUEST=GETSHARED requests that a memory object be created. The memory object is allowed to be shared upon return (through SHAREMEMOBJ). Successful completion of this service creates system interest in the memory object, which must be removed (through DETACH AFFINITY=SYSTEM) before the memory object is freed. Addressability to the memory object is not provided by GETSHARED. Instead, use SHAREMEMOBJ to enable the virtual storage to be referenced. Initial access to the memory object is read/write. A memory object created by GETSHARED is not eligible for PAGEFIX or PAGEUNFIX.
- ,COND=NO
- ,COND=YES
- An optional keyword input that specifies whether the request is unconditional or conditional.
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.
Use of COND=YES does not prevent all
abnormal terminations. For instance, if the request has incorrect or inconsistent parameters, the
system abnormally terminates the active unit of work. 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 but a return code will be set to indicate that the request could not be
completed successfully.
- ,SEGMENTS=segments
- A required input parameter that specifies the size of storage requested in megabytes. This must
be a non-zero value.
The amount of storage requested is not charged against the MEMLIMIT.
To code: Specify the RS-type address, or address in register (2) - (12), of a required doubleword field.
- ,PAGEFRAMESIZE=4K
- ,PAGEFRAMESIZE=PAGEABLE1MEG
- An optional input parameter that specifies the size of the page frames used to back the virtual
storage mapped by the allocated memory object. The default is PAGEFRAMESIZE=4K.
- ,PAGEFRAMESIZE=4K
- The memory object should be backed by 4 kilobyte (4K) page frames.
- ,PAGEFRAMESIZE=PAGEABLE1MEG
- The memory object should be backed by 1 megabyte page frames. If 1 megabyte page frames are not supported or not available, the system will attempt to back the memory object with 4K page frames. Note that you cannot specify CHANGEACCESS=LOCAL with this page frame size.
- ,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.
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 KEY=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 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.
,SENSITIVE=UNKNOWN
,SENSITIVE=YES
,SENSITIVE=NO
An optional keyword input that specifies whether the memory object will contain data that is
potentially sensitive (for instance, private or confidential). The default is SENSITIVE=UNKNOWN.- ,SENSITIVE=UNKNOWN
- Specifies that the sensitivity of the data is not known. The memory object may or may not contain sensitive data.
- ,SENSITIVE=YES
- Specifies that the memory object contains sensitive data.
- ,SENSITIVE=NO
- Specifies that the memory object does not contain sensitive data.

- ,USERTKN=usertkn
- This parameter is the name (RS-type), or address in register (2) - (12), of a required
doubleword input that identifies the user token to be associated with the shared memory object. This
can be used on a later DETACH invocation to affect all memory objects associated with this value. A
single shared memory object may be associated with multiple user tokens via GETSHARED and
SHAREMEMOBJ.
For authorized callers, bits 0 - 31 of the 64-bit user token must not all be zero; for non-authorized callers, these bits must all be zero.
Note: The scope of a user token value is the entire z/OS® image. It can be associated with shared, common, or private memory objects. - ,CHANGEACCESS=LOCAL
- ,CHANGEACCESS=GLOBAL
- An optional parameter that specifies whether the subsequent CHANGEACCESS requests are treated as
local or global. The default is CHANGEACCESS=LOCAL.
- ,CHANGEACCESS=LOCAL
- The CHANGEACCESS for this memory object will have local scope. Subsequent CHANGEACCESS requests will change access only for the address space specified by CHANGEACCESS. Note that you cannot specify PAGEFRAMESIZE=PAGEABLE1MEG with this scope.
- ,CHANGEACCESS=GLOBAL
- The CHANGEACCESS for this memory object will have global scope. Subsequent CHANGEACCESS requests
will change access for all address spaces sharing the memory object and any new address spaces that
will subsequently share it.Note: Use of GLOBAL may reduce system resources needed to manage the memory object and is encouraged when all spaces will be using the same view.
- ,ALETVALUE=aletvalue
- ,ALETVALUE=0
- This parameter is the name of an optional fullword integer input that indicates the ALET of the
address space which will be used to create the memory object.
The only supported values are 0 (primary) and 2 (home). The default value is 0.
- ,ORIGIN=origin
- A required output parameter that contains the lowest address of the memory object.
To code: Specify the RS-type address, or address in register (2) - (12), of an eight-byte pointer field.
- ,SADMP=DEFAULT
- ,SADMP=YES
- ,SADMP=NO
- An optional keyword input that specifies whether the memory object is to be captured in a
stand-alone dump.
- SADMP=DEFAULT
- When PAGEFRAMESIZE is not 2G, the memory object should be captured in a stand-alone dump.
When PAGEFRAMESIZE is 2G, the memory object should not be captured in a stand-alone dump unless explicitly requested by the stand-alone dump program.
- SADMP=YES
- The memory object should be captured in a stand-alone dump.
- SADMP=NO
- The memory object should not be captured in a stand-alone dump unless explicitly requested by the stand-alone dump program.
Default: SADMP=DEFAULT - ,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 or 4
- 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, supports all parameters except those specifically referenced in higher versions.
- 1, supports both the following parameters and parameters from version 0:
- CONVERTSIZE64
- CONVERTSTART
- GUARDSIZE64
- V64SHARED
- 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
To code: Specify one of the following:- IMPLIED_VERSION
- MAX
- A decimal value of 0, 1, 2, 3 or 4
- ,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
0Fto force the parameter list to a word boundary, or0Dto 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.