Description

The IARV64 macro allows a program to use the full range of virtual storage in an address space that is supported by 64-bit addresses. The macro creates and frees storage areas above the two gigabyte address and manages the physical frames behind the storage. Each storage area is a multiple of one megabyte in size and begins on a megabyte boundary. You can think of the IARV64 macro as the GETMAIN/FREEMAIN, PGSER or STORAGE macro for virtual storage above the two gigabyte address.

The two gigabyte address in the address space is marked by a virtual line called the bar. The bar separates storage below the two gigabyte address, called below the bar, from storage above the two gigabyte address, called above the bar. The area above the bar is intended to be used for data only, not for executing programs. Programs use the IARV64 macro to obtain storage above the bar in “chunks” of virtual storage called memory objects. Your installation can set a limit on the use of the address space above the bar for a single address space. The limit is called the MEMLIMIT.

When you create a nonshared, non-2 GB memory object, you can specify a guard area (not accessible) and a usable area. Subsequently, you can create alternate guard areas or change all or some of a guard area into an accessible area, or vice versa.

The following services are provided:
GETSTOR
Create a private memory object (in REQUEST=GETSTOR option of IARV64)
PAGEFIX
Fix physical pages within one or more nonshared memory objects. (in REQUEST=PAGEFIX option of IARV64)
PAGEUNFIX
Unfix physical pages within one or more nonshared memory objects. (in REQUEST=PAGEUNFIX option of IARV64)
PAGEOUT
Notify the system that data within physical pages of one or more memory objects will not be used in the near future. (in REQUEST=PAGEOUT option of IARV64)
PAGEIN
Notify the system that data within physical pages of one or more memory objects are needed in the near future. (in REQUEST=PAGEIN option of IARV64)
DISCARDDATA
Discard data within physical pages of one or more memory objects. (in REQUEST=DISCARDDATA option of IARV64)
CHANGEGUARD
Request that a specified range in a nonshared, non-2GB memory object be changed from guard area to usable area or vice versa. (in REQUEST=CHANGEGUARD option of IARV64)
PROTECT
Request that data within one or more memory objects be made read-only. (in REQUEST=PROTECT option of IARV64)
UNPROTECT
Request that data within one or more memory objects be made modifiable. (in REQUEST=UNPROTECT option of IARV64)
LIST
Request a list of memory objects. (in REQUEST=LIST option of IARV64)
DETACH
Free one or more memory objects. For a nonshared memory object, the object is freed. For a shared memory object, the object is freed only when the last shared user of that memory object issues the DETACH (this includes a DETACH corresponding to the system attachment formed when the object was created through GETSHARED). (in REQUEST=DETACH option of IARV64)
GETSHARED
Create a memory object that can be shared across multiple address spaces. (in REQUEST=GETSHARED option of IARV64)
SHAREMEMOBJ
Request that the specified address space be given access to one or more specified shared memory objects. (inREQUEST=SHAREMEMOBJ option of IARV64)
CHANGEACCESS
Request that a view type for segments within the specified shared memory objects be changed. (in REQUEST=CHANGEACCESS option of IARV64)
GETCOMMON
Create a 64-bit common memory object. (in REQUEST=GETCOMMON option of IARV64)
COUNTPAGES
Count the number of 4K pages currently in use in real storage, on auxiliary storage, and in both real storage and on auxiliary storage to back the input high virtual storage ranges. (in REQUEST=COUNTPAGES option of IARV64)

For guidance information about the use of 64–bit virtual storage allocation, see z/OS MVS Programming: Extended Addressability Guide.

After the separate descriptions of each individual Request are the following topics which apply to all of the Requests:
Note: The examples apply to REQUEST=GETSTOR, PAGEFIX, PAGEUNFIX, and DETACH.
Facts associated with these services: