Programming Interface Information: This information is NOT intended to be used as Programming Interfaces of z/VM.

#### DVIOP

Prolog

Control Block Contents
DVIOP DSECT
DVIENTRY DSECT

Storage Layout

Cross Reference (Contains links to field and bit definitions)

#### DVIOP Prolog

     NAME       : HCPDVIOP
     DESCRIPTION: DASD Virtual I/O Parameter List
     DSECT      : DVIOP
     FUNCTION   : Contains information specific to DASD virtual
                  I/O requests, including minidisk caching
                  interface parameters.
     LOCATED BY : DVCOPPTR in the DVCPL control block.
                  The DVCPL control block is located
                  by DBCDVCPL located in the DBCWK
                  control block.  All CMS block i/o
                  handlers (Diag X'18', Diag X'A4',
                  Diag X'250' and *BLOCKIO) have a register
                  pointing to the DBCWK block.
     CREATED BY : HCPDPCUT macro (for diagnose X'A4', *BLOCKIO,
                  diagnose x'18', and diagnose x'250')
                  (created in module HCPDBC)
                  HCPZIW (for CP i/o to CMS files)
     DELETED BY : When used as by *BLOCKIO, Diagnose x'A4',
                  Diagnose X'18', and Diagnose x'250',
                  it is deleted by HCPDPSCU.
     NOTES      :
              - This parameter list is used as a communication
                block between virtual I/O (diagnoses and
                *BLOCKIO), the channel program builder
                (HCPDPSRW or HCPDCCWB) and the cache back
                end processor (HCPBIUCB).
              -     It  is used as the common descriptor for
                an I/O request through *BLOCKIO, diagnose X'A4'
                diagnose X'18', and diagnose x'250'.
                It also is used as the common descriptor for
                an I/O request to read records from a CMS file.
              - The physical parameter list contains a DVIOP
                header, which points to a variable sized linked
                list of DVIENTRYs, one per DASD record.
              - The DVIOP  contains general information about
                the request and information common to all blocks
                associated with this DVIOP.  A DVIOP represents
                one i/o to be performed.  A DVIENTRY represents
                one block or record that is part of that i/o.
              - The cache back end processor will process up to
                one DVIOP at a time (or just a portion of that
                DVIOP if requested) and relinquish access to
                all tracks in the cache for a given DVIOP.
                Any cache invalidation required is also
                performed.

#### DVIOP Control Block Content

#### DVIOP DSECT

####

####

####

    Hex   Dec Type/Val   Lng Label (dup)    Comments
    ---- ---- --------- ---- -------------- --------
    0000    0 Structure      DVIOP          DASD Virtual I/O Parameter List
    0000    0 Dbl-Word     8 * (0)
    0000    0 Signed       4 DVIOPNXT       Pointer to the next DVIOP block
                                            (0 if no more)
    0004    4 Signed       4 DVIENPTR       Pointer to the FIRST DVIENTRY
                                            block
    0008    8 Signed       4 DVIENDEN       Pointer to the LAST DVIENTRY
                                            block
    000C   12 Signed       4 DVIDVCYL (0)   Name for moving DVIDEVNO+DVICYLNO
                                            in a single step
    000C   12 Signed       2 DVIDEVNO       The device number of the volume
                                            containing the blocks
    000E   14 Signed       2 DVICYLNO       The absolute cylinder location of
                                            the blocks on DASD
    0010   16 Bitstring    1 DVIPLFLG       Parameter list flags
              1... ....      DVIRDINS       X'80' Read-miss occurred. This is
                                            input to HCPMDCWR
              .1.. ....      DVIRBILD       X'40' Rebuild the channel program
                                            for redrive
              ..1. ....      DVISILIB       X'20' The SILI bit was on in the
                                            input parameter list so we
                                            propogated it when building CCWs
              ...1 ....      DVIDIA18       X'10' Diagnose 18 DVIOP
              .... 1...      DVIMXBLK       X'08' Mixed blocksizes in this
                                            DVIOP
              .... .1..      DVIISFBA       X'04' This is I/O to an FBA
                                            device.
              .... ..1.      DVID250        X'02' This DVIOP was built for
                                            DIAGNOSE X'250'
              .... ...1      DVIFBALR       X'01' This is an access to an FBA
                                            CMS .label record. DVIISFBA = 1
                                            also
    0011   17 Bitstring    1 DVIOPRC        Used by callers of HCPDBC to
                                            determine whether the DVIOP built
                                            ok
    0012   18 Bitstring    1 DVIHDROP       Operations in this DVIOP
              1... ....      DVIWRITE       X'80' Write operation
              .1.. ....      DVIREAD        X'40' Read operation
              ..1. ....      DVIFAIL        X'20' The I/O failed for this
                                            DVIENTRY (valid for DVICCWFG
                                            only)
    0013   19 Bitstring    1 *              RESERVED FOR FUTURE USE
    0014   20 Signed       4 DVICHPRG       Channel program address
    0018   24 Signed       2 DVICHSIZ       Channel program size in
                                            doublewords
    001A   26 Signed       2 DVIBLKSZ       Halfword containing size of all
                                            blocks described by this DVIOP
                                            (max = 4096).
    001C   28 Signed       4 DVITRIED       Cumulative counter of DVIENTRYs
                                            whose I/O has been tried, whether
                                            successful or not.
    0020   32 Signed       4 DVIBLKCT       The number of blocks to be
                                            processed. There is one DVIENTRY
                                            for each block
    0024   36 Signed       2 DVIECYL        The last cylinder in the channel
                                            .program. Equal to DVICYLNO for
                                            .CKD/ECKD.
    0026   38 Signed       2 *              Reserved for IBM use.
              00000028       DVIOPSIZ       *-DVIOP Length in bytes of
                                            parameter list header
              00000005       DVIDWSIZ       (*-DVIOP+7)/8 Length in double
                                            words   1
         Start of DVIENTRY begins here

    DVIENTRY DSECT

    Hex   Dec Type/Val   Lng Label (dup)    Comments
    ---- ---- --------- ---- -------------- --------
    0000    0 Structure      DVIENTRY       DASD Virtual I/O Parameter List
    0000    0 Address      4 DVINEXT        Next DVIENTRY (sorted order)
    0004    4 Address      4 DVIPREV        Previous DVIENTRY (sorted order)
    0008    8 Bitstring    1 DVIIORC        Status code for this block
              00000000       DVIRCOK        X'00' Successful Completion
              00000004       DVIBDBLK       X'04' Illegal block number
              00000008       DVIBDBUF       X'08' Invalid data buffer address
              0000000C       DVIRDONL       X'0C' Write to read-only device
              00000010       DVIBDSVC       X'10' Invalid service requested
              00000014       DVIPREXC       X'14' Protection exception
              00000018       DVIPAGER       X'18' Paging error
              0000001C       DVINCLEN       X'1C' Incorrect Length Check
              00000020       DVIALTRE       X'20' ALEN-translation exception
                                            condition
              00000024       DVIALSPE       X'24' ALET-specification
                                            exception condition
              00000028       DVISPECE       X'28' Specification Exception
                                            condition
              0000002C       DVIADCPE       X'2C' Addressing capability
                                            exception condition
              00000030       DVINOTPR       X'30' Entry was not processed
                                            NOTES : These next 4 must be at
                                            end and grouped together
              00000034       DVIBDPLP       X'34' Prot. Exc. on parm list
              00000038       DVIBDPLA       X'38' Addr. Exc. on parm list
              0000003C       DVIBDPLC       X'3C' Addr. Cap. exc. on parm
                                            list
              00000040       DVIBDPLG       X'40' Paging error on parm list
                                            The DVISEVER flag is a special
                                            flag to indicate a sever occure
                                            while an i/o was in progress
                                            (HCPFTUAD doing it) or before we
                                            returned from our asynchronous
                                            fork (to continue processing). In
                                            this case, the caller to HCPDBC
                                            must do special processing.
                                            HCPDBC always puts the sever code
                                            in the first DVIENTRY. Note that
                                            this ONLY applies to Diag 250 and
                                            *BLOCKIO
              000000FF       DVISEVER       X'FF' Sever or remove is pending
                                            NOTES : The above must be grouped
                                            together
    0009    9 Bitstring    1 DVICCWFG       CCW Operations flag
    000A   10 Bitstring    1 DVISTSEC       SET SECTOR argument, if provided.
                                            DVIPRVSS indicates it was.
    000B   11 Bitstring    1 DVIRWFLG       CCW flags to use for Read/Write
                                            CCW for diagnose 18 request
    000C   12 Signed       5 DVISRCID (0)   The full SEARCHID operand, if it
                                            was provided. DVIPRVSI indicates
                                            the full SEARCHID was provided.
    000C   12 Bitstring    4 DVIFBABN (0)   The FBA block number, valid when
                                            DVIISFBA is on.
    000C   12 Bitstring    2 DVICCFLD       'CC' portion of SEARCHID, if
                                            provided. Otherwise, this will be
                                            0.
    000E   14 Bitstring    3 DVIBLKID (0)   Blockid - the head and record
                                            location of the block (HHR)
    000E   14 Bitstring    2 DVIHEDNO (0)   The head number (HH)
    000E   14 Bitstring    1 DVIHED1        The 1st byte of head number
    000F   15 Bitstring    2 DVIHED2R (0)   Name for moving both
                                            DVIHED2+DVIRECNO in one step
    000F   15 Bitstring    1 DVIHED2        The 2nd byte of head number
    0010   16 Bitstring    1 DVIRECNO       The record number (R)
              00000003       DVIIDLEN       *-DVIBLKID Length in bytes of HHR
    0011   17 Bitstring    1 DVIPRVDD       Data provided for this DVIENTRY
                                            on a diagnose 18 request.
              1... ....      DVIPRVSS       X'80' Set Sector argument
                                            provided
              .1.. ....      DVIPRVSI       X'40' Search ID argument provided
              ..1. ....      DVIPRVSH       X'20' Seek Head provided (or
                                            SEEK, if first DVIENTRY)
    0012   18 Signed       2 *              RESERVED FOR IBM USE
    0014   20 Signed       2 DVIHDARG       The HH portion of the SEEK or
                                            SEEK HEAD argument, if provided.
                                            DVIPRVSH indicates it was.
                                            DVICYLNO is the CC portion of the
                                            argument. The BB portion will
                                            always be 0.
    0016   22 Signed       2 DVIBLKOV       Blocksize override for this
                                            DVIENTRY for diagnose 18.
    0018   24 Signed       4 DVIDBUFF (0)   Address list of user data buffers
    0018   24 Bitstring   12 DVIIDAL (0)    Indirect data address list
    0018   24 Address      4 DVIIDAW1       Absolute address of data buffer,
                                            not aligned.
    001C   28 Address      4 DVIIDAW2       Absolute address of second
                                            buffer, 2K aligned.
    0020   32 Address      4 DVIIDAW3       Absolute address of third buffer,
                                            2K aligned.
              .... 1...      DVI2NDHF       X'08' Mask to test if address is
                                            in second half of 4K page
    0024   36 Address      4 DVIPLPTR       P-list pointer, pointing to the
                                            p-list entry which relates to
                                            this DVENTRY DVIRTRAK and
                                            DVIFTKEY must be grouped together
    0028   40 Signed       4 DVIRTRAK       THE REL. TRACK (FOR F.T.C)
    002C   44 Signed       4 DVIFTKEY       FTC Key address for this entry
                                            DVIRTRAK and DVIFTKEY must be
                                            grouped together
    0030   48 Address      4 DVIDVTRK       DVTRK pointer for this entry
    0034   52 Signed       4 DVIASITA       I-ASIT FOR GUEST BUFFER
    0038   56 Dbl-Word     8 * (0)          Must end on double word
              00000038       DVIBLLEN       *-DVIENTRY Length (in bytes) of a
                                            DVIENTRY
              00000038       DVIDWLEN       (*-DVIENTRY+7/8) LENGTH IN DWORDS

    DVIOP Storage Layout

    *** DVIOP - DASD Virtual I/O Parameter List
    *
    *     +---------------------------+---------------------------+
    *   0 |         DVIOPNXT          |         DVIENPTR          |
    *     +---------------------------+-------------+-------------+
    *   8 |         DVIENDEN          |  DVIDEVNO   |  DVICYLNO   |
    *     +------+------+------+------+-------------+-------------+
    *  10 |:PLFLG|:OPRC |:HDROP|//////|         DVICHPRG          |
    *     +------+------+------+------+---------------------------+
    *  18 |  DVICHSIZ   |  DVIBLKSZ   |         DVITRIED          |
    *     +-------------+-------------+-------------+-------------+
    *  20 |         DVIBLKCT          |  DVIECYL    |/////////////|
    *     +---------------------------+-------------+-------------+
    *  28
    *
    *** DVIOP - DASD Virtual I/O Parameter List

    *** DVIENTRY - DASD Virtual I/O Parameter List
    *
    *     +---------------------------+---------------------------+
    *   0 |         DVINEXT           |         DVIPREV           |
    *     +------+------+------+------+-------------+------+------+
    *   8 |:IORC |:CCWFG|:STSEC|:RWFLG|  DVICCFLD   |:HED1 |:HED2 |
    *     +------+------+------+------+-------------+------+------+
    *  10 |:RECNO|:PRVDD|/////////////|  DVIHDARG   |  DVIBLKOV   |
    *     +------+------+-------------+-------------+-------------+
    *  18 |         DVIIDAW1          |         DVIIDAW2          |
    *     +---------------------------+---------------------------+
    *  20 |         DVIIDAW3          |         DVIPLPTR          |
    *     +---------------------------+---------------------------+
    *  28 |         DVIRTRAK          |         DVIFTKEY          |
    *     +---------------------------+---------------------------+
    *  30 |         DVIDVTRK          |         DVIASITA          |
    *     +---------------------------+---------------------------+
    *  38
    *
    *** DVIENTRY - DASD Virtual I/O Parameter List

    DVIOP Cross Reference

    Symbol         Dspl Value
    -------------- ---- -----
    DVIADCPE       0008 0000002C
    DVIALSPE       0008 00000024
    DVIALTRE       0008 00000020
    DVIASITA       0034
    DVIBDBLK       0008 00000004
    DVIBDBUF       0008 00000008
    DVIBDPLA       0008 00000038
    DVIBDPLC       0008 0000003C
    DVIBDPLG       0008 00000040
    DVIBDPLP       0008 00000034
    DVIBDSVC       0008 00000010
    DVIBLKCT       0020
    DVIBLKID       000E
    DVIBLKOV       0016
    DVIBLKSZ       001A
    DVIBLLEN       0038 00000038
    DVICCFLD       000C
    DVICCWFG       0009
    DVICHPRG       0014
    DVICHSIZ       0018
    DVICYLNO       000E
    DVIDBUFF       0018
    DVIDEVNO       000C
    DVIDIA18       0010 10
    DVIDVCYL       000C
    DVIDVTRK       0030
    DVIDWLEN       0038 00000038
    DVIDWSIZ       0026 00000005
    DVID250        0010 02
    DVIECYL        0024
    DVIENDEN       0008
    DVIENPTR       0004
    DVIFAIL        0012 20
    DVIFBABN       000C
    DVIFBALR       0010 01
    DVIFTKEY       002C
    DVIHDARG       0014
    DVIHDROP       0012
    DVIHEDNO       000E
    DVIHED1        000E
    DVIHED2        000F
    DVIHED2R       000F
    DVIIDAL        0018
    DVIIDAW1       0018
    DVIIDAW2       001C
    DVIIDAW3       0020
    DVIIDLEN       0010 00000003
    DVIIORC        0008
    DVIISFBA       0010 04
    DVIMXBLK       0010 08
    DVINCLEN       0008 0000001C
    DVINEXT        0000
    DVINOTPR       0008 00000030
    DVIOPNXT       0000
    DVIOPRC        0011
    DVIOPSIZ       0026 00000028
    DVIPAGER       0008 00000018
    DVIPLFLG       0010
    DVIPLPTR       0024
    DVIPREV        0004
    DVIPREXC       0008 00000014
    DVIPRVDD       0011
    DVIPRVSH       0011 20
    DVIPRVSI       0011 40
    DVIPRVSS       0011 80
    DVIRBILD       0010 40
    DVIRCOK        0008 00000000
    DVIRDINS       0010 80
    DVIRDONL       0008 0000000C
    DVIREAD        0012 40
    DVIRECNO       0010
    DVIRTRAK       0028
    DVIRWFLG       000B
    DVISEVER       0008 000000FF
    DVISILIB       0010 20
    DVISPECE       0008 00000028
    DVISRCID       000C
    DVISTSEC       000A
    DVITRIED       001C
    DVIWRITE       0012 80
    DVI2NDHF       0020 08

    This information is
    based on z/VM V4R3.0.
    Last updated on 1 May 2002 at 08:38:07 EDT.

    Copyright IBM Corporation, 1990, 2002