z/OS MVS Programming: Extended Addressability Guide
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


The move-page facility

z/OS MVS Programming: Extended Addressability Guide
SA23-1394-00

Note: The move-page facility is standard in all releases of z/OS®.

As an example of using the HSPSERV macro with the HSPALET parameter, suppose PGM1 and PGM2 that are illustrated in Figure 2 want to gain fast transfer of data to and from expanded storage. Both programs use ALESERV ADD to add entries to access lists; PGM1 adds to its PASN-AL and PGM2 adds to its DU-AL. They use HSPALET on HSPSERV. The HSPALET parameter is available to both problem state programs and supervisor state programs. Figure 1 describes this scenario.

Figure 1. Gaining fast data transfer to and from expanded storage
This picture is described in preceding text.

Before you issue the HSPSERV macro with the HSPALET parameter, place the address of a 144-byte work area in GPR 13 and zero in AR 13.

Restrictions on the combined use of hiperspaces and data-in-virtual are listed in Using data-in-virtual with standard hiperspaces.

Example of an HSPSERV with additional performance: The following example shows a program creating a non-shared standard hiperspace. To get additional performance from HSPSERV, the program obtains the ALET from the ALESERV macro and uses the ALET as input to HSPSERV. The example assumes the ASC mode is primary.
⋮
* DSPSERV CREATES A NON-SHARED STANDARD HIPERSPACE OF 20 4096 BYTE-BLOCKS
*
         DSPSERV CREATE,NAME=HSNAME,TYPE=HIPERSPACE,HSTYPE=SCROLL,     X
               SHARE=NO,BLOCKS=20,STOKEN=HSSTOKEN,ORIGIN=HSORIG1
*
* ALESERV RETURNS AN ALET ON THE DU-AL FOR THE HIPERSPACE
*
         ALESERV ADD,STOKEN=HSSTOKEN,ALET=HSALET,AL=WORKUNIT
*
* THE STORAGE MACRO OBTAINS FOUR PAGES OF ADDRESS SPACE STORAGE,
* THE BNDRY=PAGE PARAMETER ALIGNS PAGES ON A 4K BOUNDARY
*   - THE FIRST AND SECOND PAGES ARE THE SWRITE SOURCE
*   - THE THIRD AND FOURTH PAGES ARE THE SREAD TARGET
* COPY INTO FIRST AND SECOND PAGES THE DATA TO BE WRITTEN TO HIPERSPACE
   .
         STORAGE OBTAIN,LENGTH=4096*4,BNDRY=PAGE
         ST   1,ASPTR               * SAVE ADDR SPACE STORAGE ADDRESS
         MVC  0(20,1),SRCTEXT1      * INIT FIRST ADDR SPACE PAGE
         A    1,ONEBLK              * COMPUTE PAGE TWO ADDRESS
         MVC  0(20,1),SRCTEXT2      * INIT SECOND ADDR SPACE PAGE
   .
* SET UP THE SWRITE RANGE LIST TO WRITE FROM THE FIRST AND SECOND
* ADDRESS SPACE PAGES INTO THE HIPERSPACE
   .
         L    1,ASPTR               * GET FIRST ADDR PAGE ADDRESS
         ST   1,ASPTR1              * PUT ADDRESS INTO RANGE LIST
   .
* SAVE CONTENTS OF AR/GPR 13 BEFORE RESETTING THEM FOR HSPSERV
   .
         ST   13,SAVER13            * SAVE THE CONTENTS OF GPR 13
         EAR  13,13                 * LOAD GPR 13 FROM AR 13
         ST   13,SAVEAR13           * SAVE THE CONTENTS OF AR 13
   .
* ESTABLISH ADDRESS OF 144-BYTE SAVE AREA, AS HSPALET ON HSPSERV REQUIRES
* AND WRITE TWO PAGES FROM THE ADDRESS SPACE TO THE HIPERSPACE
   .
         SLR  13,13                 * SET GPR 13 TO 0
         SAR  13,13                 * SET AR 13 TO 0
         LA   13,WORKAREA           * SET UP AR/GPR 13 TO WORKAREA ADDR
         HSPSERV SWRITE,STOKEN=HSSTOKEN,RANGLIST=RANGPTR1,HSPALET=HSALET
* AFTER THE SWRITE, THE FIRST TWO ADDRESS SPACE PAGES MIGHT BE OVERLAID
   .
* RESTORE ORIGINAL CONTENTS OF AR/GPR 13
   .
         L    13,SAVEAR13           * SET GPR 13 TO SAVED AR 13
         SAR  13,13                 * RESET AR 13
         L    13,SAVER13            * RESET GPR 13
   .
   .
* SET UP THE SREAD RANGE LIST TO READ INTO THE THIRD AND FOURTH
* ADDRESS SPACE PAGES WHAT WAS PREVIOUSLY WRITTEN TO THE HIPERSPACE
   .
         MVC  HSORIG2,HSORIG1     * COPY ORIGIN OF HIPERSPACE TO HSORIG2
         L    1,ASPTR               * GET FIRST ADDR PAGE ADDRESS
         A    1,TWOBLKS             * COMPUTE THIRD PAGE ADDRESS
         ST   1,ASPTR2              * PUT ADDRESS INTO RANGE LIST
   .
* SAVE CONTENTS OF AR/GPR 13
   .
         ST   13,SAVER13            * SAVE THE CONTENTS OF GPR 13
         EAR  13,13                 * LOAD GPR 13 FROM AR 13
         ST   13,SAVEAR13           * SAVE THE CONTENTS OF AR 13
   .
* ESTABLISH ADDRESS OF 144-BYTE SAVE AREA, AS HSPALET ON HSPSERV REQUIRES,
* AND READ TWO BLOCKS OF DATA FROM THE HIPERSPACE INTO THE
* THIRD AND FOURTH PAGES IN THE ADDRESS SPACE STORAGE USING HSPALET
   .
         SLR  13,13                 * SET GPR 13 TO 0
         SAR  13,13                 * SET AR 13 TO 0
         LA   13,WORKAREA           * SET UP AR/GPR 13 TO WORKAREA ADDR
         HSPSERV SREAD,STOKEN=HSSTOKEN,RANGLIST=RANGPTR2,HSPALET=HSALET
   .
* RESTORE ORIGINAL CONTENTS OF AR/GPR 13
   .
         L    13,SAVEAR13           * SET GPR 13 TO SAVED AR 13
         SAR  13,13                 * RESET AR 13
         L    13,SAVER13            * RESET GPR 13
   .
* FREE THE ALET, FREE THE ADDRESS SPACE STORAGE, AND DELETE THE HIPERSPACE
   .
* DATA AREAS AND CONSTANTS
   .
HSNAME   DC    CL8'SCROLLHS'          * NAME FOR THE HIPERSPACE
HSSTOKEN DS    CL8                    * STOKEN FOR THE HIPERSPACE
HSALET   DS    CL4                    * ALET FOR THE HIPERSPACE
ASPTR    DS    1F                     * LOCATION OF ADDR SPACE STORAGE
SAVER13  DS    1F                     * LOCATION TO SAVE GPR 13
SAVEAR13 DS    1F                     * LOCATION TO SAVE AR 13
WORKAREA DS    CL144                  * WORK AREA FOR HSPSERV
ONEBLK   DC    F'4096'                * LENGTH OF ONE BLOCK OF STORAGE
TWOBLKS  DC    F'8092'                * LENGTH OF TWO BLOCKS OF STORAGE
SRCTEXT1 DC    CL20' INVENTORY ITEMS    '
SRCTEXT2 DC    CL20' INVENTORY SURPLUSES'
         DS    0F
RANGPTR1 DC    A(SWRITLST)            * ADDRESS OF SWRITE RANGE LIST
RANGPTR2 DC    A(SREADLST)            * ADDRESS OF SREAD RANGE LIST
         DS    0F
SWRITLST DS    0CL12                  * SWRITE RANGE LIST
ASPTR1   DS    F                      * START OF ADDRESS SPACE SOURCE
HSORIG1  DS    F                      * TARGET LOCATION IN HIPERSPACE
NUMBLKS1 DC    F'2'                   * NUMBER OF 4K BLOCKS IN SWRITE
         DS    0F
SREADLST DS    0CL12                  * SREAD RANGE LIST
ASPTR2   DS    F                      * TARGET LOCATION IN ADDR SPACE
HSORIG2  DS    F                      * START OF HIPERSPACE SOURCE
NUMBLKS2 DC    F'2'                   * NUMBER OF 4K BLOCKS IN SREAD
         DS    0F

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014