zHPF Channel Program

zHPF channel programs are supported for EXCP and EXCPVR requests for DASD devices. The following diagram shows the different parts of a zHPF channel program.
Figure 1. zHPF channel program
zhmppic
The parts of a zHPF channel program include:
  • A transport control word (TCW) that contains pointers to all of the other areas of the channel program and the number of bytes to be read or written. The channel uses the TCW to transport the commands and data to the device and locate the status block used to store ending status information; it is not sent to the device. You can use the IOSDTCW macro to map the TCW.

    For an EXCPVR request, the TCW must reside in 24 or 31-bit central and virtual storage.

    For EXCP, the TCW must be in 24 or 31-bit virtual storage or anywhere in central storage.

    For both EXCP or EXCPVR, the TCW must start on a 64-byte boundary. If the TCW does not start on a 64-byte boundary, EXCP fails the request with abend code 800, reason code X'OA'.

  • A transport status block (TSB) that contains I/O completion information, sense data, and measurement statistics. The TSB is assigned by z/OS®, not the EXCP user. If you provide a TCW with a nonzero TSB address, EXCP fails the request with abend code 800. The system copies all relevant status information from the TSB into the IOBE.
  • A transport command control block (TCCB) containing the commands and control data parameters to be passed to the device. The TCCB should start on a doubleword boundary, must reside within a 4 KB page, and may reside in 64-bit virtual and central storage. You can use the IOSDTCCB macro to map the TCCB, including device command words (DCWs). The TCCB consists of three parts:
    • Transport control area header (TCAH) containing information about the transport control area (TCA) and the commands that are contained within.
    • Transport control area (TCA) containing the commands and control parameters. Each command is represented by a DCW that consists of a command code, flags to indicate chaining and other options, a control data count, and a data byte count, if the command is used to transfer data. If the command transfers control data (command parameters) to the device, the control data follows the DCW in the TCA.

      Unlike CCWs, DCWs do not point to their corresponding I/O buffers. The I/O buffers for all DCWs are pointed to by the TCW, and the I/O buffers associated with a particular DCW are based on the amount of data transferred by the previous DCWs.

      The maximum size of the TCA is 240 bytes.

    • Transport control area trailer (TCAT) containing the number of bytes transferred.
    The System z® I/O architecture allows the TCCB to be pointed to either directly by the TCW or indirectly via a transport indirect address list (TIDAL). However, TCCB TIDALs are not supported for EXCP or EXCPVR requests. If a TCCB TIDAL is specified, EXCP fails the request with abend code 800.
  • One or more I/O buffers. The TCW may point to a single read and/or write buffer.

    For EXCPVR requests, the I/O buffers can be up to 4 KB. If more than 4 KB of data needs to be transferred or the data is non-contiguous or spans a page, a data TIDAL must be created. The I/O buffers and the TIDAWs may reside in 64-bit virtual and central storage. A TIDAL can also be chained to another TIDAL by setting the TIDAL transfer-in-channel (TTIC) bit in the last TIDAW in the list. In this case, the TIDAW address field does not point to an I/O buffer, but instead points to another TIDAL.

    For EXCP requests, the I/O buffers can be greater than 4 KB - see TIDAW requirements for EXCP requests.

The following table summarizes the channel program storage requirements for zHPF channel programs:
Table 1. Storage area locations for zHPF channel program components
Request and format Channel Program Component Virtual storage location Central storage location
EXCP TCW 31-bit Any
TCCB Any Any
TIDAL Any Any
I/O Buffer Any Any
EXCPVR TCW 31-bit 31-bit
TCCB Any Any
TIDAL Any Any
I/O Buffer Any Any