Programming Interface Information:
This information is NOT intended to be used as Programming Interfaces of z/VM. |
DVIOP
Control Block Contents
DVIOP DSECT
DVIENTRY DSECT
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 V4R2.0. Last updated on 30 Oct 2001 at 15:38:30 EDT.
Copyright IBM Corporation, 1990, 2001