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
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 non-zero 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 double word 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 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 toptions, 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 buffesr
can be up to 4 KB in size. 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
4KB - 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
componentsRequest 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 |