z/OS DFSMSdfp Advanced Services
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Using the EXCPVR macro instruction

z/OS DFSMSdfp Advanced Services
SC23-6861-01

The EXCPVR macro instruction provides you with the same functions as the EXCP macro instruction and allows your program to improve the efficiency of the I/O operations in a paging environment by translating its own virtual channel programs to real channel programs. In order to issue EXCPVR, your program must be executing in protection key eight, executing in supervisor state, or be APF authorized.

The program issuing the EXCPVR must remain in authorized state until completion of the channel programs. For a description of how to authorize a program, see z/OS MVS Programming: Authorized Assembler Services Guide.

The format of the EXCPVR macro is:

Read syntax diagramSkip visual syntax diagram
>>-+-------+--EXCPVR--iob_addr---------------------------------><
   '-label-'                     

iob_addr—RX-type address, (2-12), or (1)
the address of the input/output block of the channel program to be executed.

If your program is also supplying an IOBE, then set register 0 to the address of the IOBE, and set flag IOBCEF on in the IOB to indicate that the IOB extension is present. An IOBE is required for format-1 CCW and zHPF channel programs.

To use EXCPVR, follow the procedures needed to execute an EXCP request and also follow the procedures listed below. If you have already page fixed your channel program and data areas prior to issuing the EXCPVR macro, or you are in a V=R address space, steps 1 and 2 are not necessary.

  1. Code PGFX=YES in the DCB associated with the EXCPVR requests and provide a page-fix (PGFX) appendage by specifying SIOA=symbol in the DCB.
  2. Fix the data area containing your channel program, the data areas referred to by your channel program, the PCI appendage (if your program can generate program-controlled interrupts), and any area referred to by the PCI appendage including the DEB, IOB, etc. To fix these areas, build a list in your PGFX appendage containing the addresses of these virtual areas. Any area that you know already is in fixed storage for the duration of the I/O can be omitted from the page fix list.
  3. If you have not already built indirect address lists or if your channel program still contains virtual addresses prior to issuing the EXCPVR macro, you must do the following two items in your start I/O (SIO) appendage. The SIO appendage is described in Start-I/O Appendage.
    • Determine whether the data areas in virtual storage specified in the address fields of your channel program cross page boundaries. If they do, build an indirect data address list and update your channel program with the address of the indirect address list. For CCW channel programs, build an IDAL or MIDAL.

      If you build an IDAL, put the address of the IDAL in the affected CCW and turn on the IDA bit in the CCW.

      If you build a MIDAL, put the address of the MIDAL in the affected CCW and turn on the MIDA bit in the CCW.

      For zHPF channel programs, build a TIDAL, put the address of the TIDAL in the input or output address field in the TCW, and turn on the input or output TIDAL bit in the TCW.
    • Translate the addresses in your channel programs from virtual to central storage addresses.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014