|
Programming Interface Information:
This information is NOT intended to be
used as Programming Interfaces of z/VM. |
PIOBK
Control Block Contents
PIOBK DSECT
Cross Reference (Contains links to field and bit definitions)
PIOBK Prolog
NAME : HCPPIOBK
DESCRIPTION: Paging I/O CCW packages.
DSECT : PIOBK
FUNCTION : A PIOBK contains the necessary CCW strings to
do paging I/O operations to drums and DASD.
LOCATED BY : IORCPA - Contains the pointer to the first active
PIOBK.
EXPSCCWP - Contains the pointer to the last PIOBK
that contains the suspended CCW string.
CREATED BY : HCPRDAAT As part of initialization or during
ATTACH time for CP-owned volumes
DELETED BY : HCPRDDDT Released if the CP owned volume is DETACHED
COMMENTS :
Below is a model channel program for one PIOBK.
The PIOBKs are chained together by TIC CCWs. They
form a loop so that the last one TICs back to the
first PIOBK.
*
CKD format: *
*
offset opcode description *
0 07/8B (Seek, or Set Page Parameter for 3350 m11/21) *
8 23/08 (Set Sector or TIC cache only) *
10 31/B1 (Search ID or Multiple Track Search ID) *
18 08 (TIC to the SearchID) *
20 0x (06/05 Data Read or Write) *
28 03/08 (TIC/NOP) - this CCW will be a NOP if this *
PIOBK is the last package in the active *
channel program, or a TIC to the next PIOBK *
in the active channel program otherwise *
30 -- Seek data BBCCHH (physical layout of DASD) *
Where BB = Bin number (zeroes) *
CC = Cylinder number *
HH = Head/Track number *
36 -- SearchID data CCHHR (logical layout of DASD) *
Where CC = Cylinder number *
HH = Head/Track number *
R = Record number *
3B -- Flag byte *
3C -- Savearea or Indirect Interrupt Return Address *
40 07 Start of the next PIOBK package (Seek/SPP) *
*
ECKD format: *
*
offset opcode description *
0 -- Locate Record data area (two doublewords, *
mapped by HCPLRDA *
10 63 (Define Extent CCW) *
18 47 (Locate Record CCW) *
20 8x (86/85 Read Data or Write Update Data CCW) *
28 03/08 (TIC/NOP) - this CCW will be a NOP if this *
PIOBK is the last package in the active *
channel program, or a TIC to the next PIOBK *
in the active channel program otherwise *
30 -- 390 build: Unused 8 bytes *
ESAME build: Format-2 IDAW (8 bytes, 64 bits) *
38 -- Unused 3 bytes *
3B -- Flag byte *
3C -- Savearea or Indirect Interrupt Return Address *
40 -- Locate record data area of next package *
*
FBA format: *
*
offset opcode description *
0 -- Locate data area (one doubleword, mapped by *
HCPLCDA) *
8 -- 390 build: Unused 8 bytes *
ESAME build: Format-2 IDAW (8 bytes, 64 bits) *
10 63 (Define Extent CCW) *
18 43 (Locate CCW) *
20 4x (42/41 Read or Write CCW) *
28 03/08 (TIC/NOP) - this CCW will be a NOP if this *
PIOBK is the last package in the active *
channel program, or a TIC to the next PIOBK *
in the active channel program otherwise *
30 -- Unused 2 bytes *
32 -- Calculated pseudo-cylinder number *
corresponding to starting block number *
34 -- Calculated pseudo-page number corresponding *
to starting block number *
35 -- Unused 3 bytes *
38 -- Unused 3 bytes *
3B -- Flag byte *
3C -- Savearea or Indirect Interrupt Return Address *
40 -- Locate data area of next package *
PIOBK Control Block Content
PIOBK DSECT
Hex Dec Type/Val Lng Label (dup) Comments
---- ---- --------- ---- -------------- --------
0000 0 Structure PIOBK Paging I/O CCW packages.
PIOBK definitions common to all formats
0000 0 Signed 8 PIOINITL (4) Channel program initialization
and target record location area
0020 32 Signed 8 PIORDWR (0) - Read or write CCW -
0020 32 Bitstring 1 PIORDWRO CCW op code - x'06' CKD Read
Data, (**) x'05' CKD Write Data,
(**) x'86' ECKD Read Data, x'85'
ECKD Write Update Record, x'42'
FBA Read or x'41' FBA Write.
..1. .... PIOFINIS X'20' Indicates that the PIOBK
has been processed. If PIORDWRO
equals: x'26' for a CKD read,
(**) x'25' for a CKD write, (**)
x'A6' for an ECKD read, x'A5' for
an ECKD write, x'62' for an FBA
read, or x'61' for an FBA write,
then the PIOBK has been processed
..11 .... PIOINERR X'30' Indicates that the PIOBK
had an error that has been
processed. If PIORDWRO equals:
x'36' for a CKD read, (**) x'35'
for a CKD write, (**) x'B6' for
an ECKD read, x'B5' for an ECKD
write, x'72' for an FBA read, or
x'71' for an FBA write, then an
error has already been processed
for this PIOBK.
Notes : These PIOFINS and PIOINERR equates are neither bits nor codes
in the traditional sense. They are turned on during interrupt
processing (after the I/O for this PIOBK has completed) in the top
nibble of the opcode (which never uses those bits) to indicate that the
PIOBK has been processed, or the PIOBK has an error that has been
processed, respectively. There are turned on and off with OI and NI
without changing the opcode itself (and obviously, must be turned off
before the PIOBK is used in an active channel program).
(**): CKD formatted devices and CKD format paging channel programs are
no longer supported as of this release, although they will still be
attached to the system and used.
0021 33 Address 1 PIORDWRF CCWCC - READ or WRITE CCW flag
field 390 build default: Command
Chaining only
0022 34 Signed 2 PIORDWRC '1000' - READ or WRITE CCW count
0024 36 Address 4 PIORDWRA - READ or WRITE CCW data address
in 390 build
0028 40 Signed 8 PIO3OR8 (0) - NOP or TIC CCW -
0028 40 Signed 4 PIO3OR8W (0) - 1st word of CCW that will be
changed with a TIC CCW.
0028 40 Bitstring 1 PIO3OR8O '03/08' - NOP or TIC op code
0029 41 Address 1 PIO3OR8F CCWUSPN / 0 - NOP or TIC flags
002A 42 Signed 2 PIO3OR8C '0000' - NOP or TIC count
002C 44 Address 4 PIO3OR8A - NOP or TIC address field
contains pointer to next PIOBK
package's starting CCW
0030 48 Bitstring 11 PIOMISC Miscellaneous data: - ECKD:
contains the IDAW used to locate
the target area in host absolute
storage - FBA: used to save the
calculated cylinder and page
numbers corresponding to the
block numbers used for the actual
I/O - CKD: contains SEEK and
SEARCHID arguments
003B 59 Bitstring 1 PIOFLAG Flags byte:
...1 .... PIOBADCC X'10' Indicates a condition code
1 or 2 was received from a RSCH.
When an IFCC+CCC is received,
we'll need to restart this
package.
.... 1... PIOPGFLT X'08' This is a page read for a
page fault.
.... .1.. PIOIOERR X'04' Indicates an I/O error has
occurred for this CCW package for
an incorrect length problem and a
no record found on a miss for
N+1.
.... ..1. PIOMRPCI X'02' Indicates the first record
of multi read requires a PCI.
.... ...1 PIOMULTI X'01' Indicates a multiple write
or read CCW package.
...1 1111 PIOALLFG PIOMRPCI+PIOIOERR+PIOMULTI+PIOPGF
LT+PIOBADCC Used to reset flags
in PIOFLAG
003C 60 Address 4 PIOSVRTN Pointer to structure designating
interface back to original
caller: SW - deferred savearea
(SVGBK) SR - deferred savearea
(SVGBK) MW - Indirect IRA - may
be a full PIRBK or one word
containing caller's Interrupt
Return Address (IRA) backend
routine MR - If negative,
contains address of deferred
savearea (SVGBK) for task
deferred on faulted page,
otherwise, contains Indirect IRA,
as per MW case
0040 64 Signed 4 PIONEXT (0) Next sequential PIOBK
00000040 PIOBSIZE *-PIOBK Size of one CCW package
in bytes
00000008 PIOSIZE ((*-PIOBK)+7)/8 Size of one CCW
package in double-words
00FFFFC0 PIOISOLB X'7FFFFFC0' Isolate the beginning
address of one PIOBK block.
00FFF800 PIOISOLA X'7FFFF800' Isolate the start
address of the first PIOBK in
storage.
00000800 PIOTOTBS 2048 Total byte size of area for
all PIOBKs.
00000020 PIOCTPIO (PIOTOTBS/8)/PIOSIZE Count of
PIOBKs that fit into a PIOBK
area.
00000100 PIOPAGSZ PIOCTPIO*PIOSIZE Total doubleword
size of area for all PIOBKs.
End of common PIOBK definitions
PIOBK definitions specifically for ECKD paging devices
0000 0 Bitstring 16 PIOLRDA - Locate Record Parameter This
area mapped by LRDA DSECT
0010 16 Signed 8 PIODEFX (0) - Define Extent -
0010 16 Bitstring 1 PIODEFXO '63' - DEFINE EXTENT CCW OP code
0011 17 Address 1 PIODEFXF CCWCC - DEFINE EXTENT CCW flag
field
0012 18 Signed 2 PIODEFXC '0010' - DEFINE EXTENT CCW byte
count
0014 20 Address 4 PIODEFXA (PAGDXDA) - DEFINE EXTENT CCW
data address
0018 24 Signed 8 PIOLR (0) - Locate Record -
0018 24 Bitstring 1 PIOLRO '47' - LOCATE RECORD CCW OP code
0019 25 Address 1 PIOLRF CCWCC - LOCATE RECORD CCW flag
field
001A 26 Signed 2 PIOLRC '0010' - LOCATE RECORD CCW byte
count
001C 28 Address 4 PIOLRA (PIOLRDA) - LOCATE RECORD CCW
data address
PIOBK definitions specifically for FBA paging devices
0000 0 Bitstring 8 PIOLCDA - Locate CCW data area (mapped by
LCDA DSECT)
0008 8 Bitstring 8 * - Unused by FBA
0018 24 Signed 8 PIOLOC (0) - Locate CCW
0018 24 Bitstring 1 PIOLOCO - Locate opcode (x'43')
0019 25 Address 1 PIOLOCF - Locate flag field (CCWCC)
001A 26 Signed 2 PIOLOCC - Locate byte count (X'0008')
001C 28 Address 4 PIOLOCA - Locate data address (PIOLDA)
0030 48 Bitstring 2 * - Unused for FBA
0032 50 Bitstring 3 PIOFCCP (0) - CCP for block number
0032 50 Signed 2 PIOFCC - Cylinder number
0034 52 Bitstring 1 PIOFP - Page number
PIOBK definitions specifically for CKD paging devices
0000 0 Signed 8 PIOSEEK (0) - Seek CCW -
0000 0 Signed 4 PIOSEEKW (0) - 1st word of CCW.
0000 0 Bitstring 1 PIOSEEKO '07' - SEEK CCW OP code
0001 1 Address 1 PIOSEEKF CCWCC - SEEK CCW flag field
0002 2 Signed 2 PIOSEEKC '0006' - SEEK CCW byte count
0004 4 Address 4 PIOSEEKA PIOSKDAT - SEEK CCW data address
0008 8 Signed 8 PIOSETS (0) - Set Sector CCW -
0008 8 Bitstring 1 PIOSETSO '23' - SET SECTOR CCW OP code
0009 9 Address 1 PIOSETSF CCWCC - SET SECTOR CCW flag field
000A 10 Signed 2 PIOSETSC '0001' - SET SECTOR CCW byte
count
000C 12 Address 4 PIOSETSA PIOSS - SET SECTOR CCW data
address
0010 16 Signed 8 PIOSRCH (0) - SearchID Equal CCW -
0010 16 Bitstring 1 PIOSRCHO '31' - SearchID CCW OP code
0011 17 Address 1 PIOSRCHF CCWCC - SearchID CCW flag field
0012 18 Signed 2 PIOSRCHC '0005' - SearchID CCW byte count
0014 20 Address 4 PIOSRCHA PIOCC - SearchID CCW data address
0018 24 Signed 8 PIOSTIC (0) - Tic CCW to Search -
0018 24 Bitstring 1 PIOSTICO '08' - TIC CCW OP code
0019 25 Address 1 PIOSTICF Zeroes - TIC CCW must be zeroes
001A 26 Signed 2 PIOSTICC Zeroes - TIC CCW must be zeroes
001C 28 Address 4 PIOSTICA PIOSRCH - TIC CCW TIC to search
address
0030 48 Bitstring 6 PIOSKDAT (0) - Seek argument -
0030 48 Signed 2 PIOBB - BB Bin number
0032 50 Bitstring 4 PIOSCCHH (0) - Picks up both fields below
0032 50 Signed 2 PIOSCC - CC Cylinder number
0034 52 Signed 2 PIOSHH - HH Head number
0036 54 Bitstring 5 PIOCCHHR (0) - SearchID argument
0036 54 Signed 2 PIOSIDCC - SearchID cylinder number
0038 56 Signed 2 PIOSIDHH - SearchID head number
003A 58 Bitstring 1 PIOREC - R Record number
PIOBK Storage Layout
*** PIOBK - Paging I/O CCW packages.
*
* +-------------------------------------------------------+
* 0 | |
* = PIOINITL =
* | |
* +------+------+-------------+---------------------------+
* 20 |:RDWRO|:RDWRF| PIORDWRC | PIORDWRA |
* +------+------+-------------+---------------------------+
* 28 |:3OR8O|:3OR8F| PIO3OR8C | PIO3OR8A |
* +------+------+-------------+---------------------------+
* 30 | PIOMISC |
* | +------+---------------------------+
* 38 | |:FLAG | PIOSVRTN |
* +--------------------+------+---------------------------+
*
*** PIOBK - Paging I/O CCW packages.
*** Overlay for PIOINITL in PIOBK
*
* +-------------------------------------------------------+
* 0 | PIOLRDA |
* | |
* +------+------+-------------+---------------------------+
* 10 |:DEFXO|:DEFXF| PIODEFXC | PIODEFXA |
* +------+------+-------------+---------------------------+
* 18 |PIOLRO|PIOLRF| PIOLRC | PIOLRA |
* +------+------+-------------+---------------------------+
* 20
*
*** Overlay for PIOINITL in PIOBK
*** Overlay for PIOINITL in PIOBK
*
* +-------------------------------------------------------+
* 0 | PIOLCDA |
* +-------------------------------------------------------+
* 8 |///////////////////////////////////////////////////////|
* +-------------------------------------------------------+
* 10
*
*** Overlay for PIOINITL in PIOBK
*** Overlay for PIOLR in PIOBK
*
* +------+------+-------------+---------------------------+
* 18 |:LOCO |:LOCF | PIOLOCC | PIOLOCA |
* +------+------+-------------+---------------------------+
* 20
*
*** Overlay for PIOLR in PIOBK
*** Overlay for PIOMISC in PIOBK
*
* +-------------+-------------+------+
* 30 |/////////////| PIOFCC |PIOFP | 35
* +-------------+-------------+------+
*
*** Overlay for PIOMISC in PIOBK
*** Overlay for PIOINITL in PIOBK
*
* +------+------+-------------+---------------------------+
* 0 |:SEEKO|:SEEKF| PIOSEEKC | PIOSEEKA |
* +------+------+-------------+---------------------------+
* 8 |:SETSO|:SETSF| PIOSETSC | PIOSETSA |
* +------+------+-------------+---------------------------+
* 10 |:SRCHO|:SRCHF| PIOSRCHC | PIOSRCHA |
* +------+------+-------------+---------------------------+
* 18 |:STICO|:STICF| PIOSTICC | PIOSTICA |
* +------+------+-------------+---------------------------+
* 20
*
*** Overlay for PIOINITL in PIOBK
*** Overlay for PIOMISC in PIOBK
*
* +-------------+-------------+-------------+-------------+
* 30 | PIOBB | PIOSCC | PIOSHH | PIOSIDCC |
* +-------------+------+------+-------------+-------------+
* 38 | PIOSIDHH |PIOREC| 3B
* +-------------+------+
*
*** Overlay for PIOMISC in PIOBK
PIOBK Cross Reference
Symbol Dspl Value -------------- ---- ----- PIOALLFG 003B 1F PIOBADCC 003B 10 PIOBB 0030 PIOBSIZE 0040 00000040 PIOCCHHR 0036 PIOCTPIO 0040 00000020 PIODEFX 0010 PIODEFXA 0014 PIODEFXC 0012 PIODEFXF 0011 PIODEFXO 0010 PIOFCC 0032 PIOFCCP 0032 PIOFINIS 0020 20 PIOFLAG 003B PIOFP 0034 PIOINERR 0020 30 PIOINITL 0000 PIOIOERR 003B 04 PIOISOLA 0040 00FFF800 PIOISOLB 0040 00FFFFC0 PIOLCDA 0000 PIOLOC 0018 PIOLOCA 001C PIOLOCC 001A PIOLOCF 0019 PIOLOCO 0018 PIOLR 0018 PIOLRA 001C PIOLRC 001A PIOLRDA 0000 PIOLRF 0019 PIOLRO 0018 PIOMISC 0030 PIOMRPCI 003B 02 PIOMULTI 003B 01 PIONEXT 0040 PIOPAGSZ 0040 00000100 PIOPGFLT 003B 08 PIORDWR 0020 PIORDWRA 0024 PIORDWRC 0022 PIORDWRF 0021 PIORDWRO 0020 PIOREC 003A PIOSCC 0032 PIOSCCHH 0032 PIOSEEK 0000 PIOSEEKA 0004 PIOSEEKC 0002 PIOSEEKF 0001 PIOSEEKO 0000 PIOSEEKW 0000 PIOSETS 0008 PIOSETSA 000C PIOSETSC 000A PIOSETSF 0009 PIOSETSO 0008 PIOSHH 0034 PIOSIDCC 0036 PIOSIDHH 0038 PIOSIZE 0040 00000008 PIOSKDAT 0030 PIOSRCH 0010 PIOSRCHA 0014 PIOSRCHC 0012 PIOSRCHF 0011 PIOSRCHO 0010 PIOSTIC 0018 PIOSTICA 001C PIOSTICC 001A PIOSTICF 0019 PIOSTICO 0018 PIOSVRTN 003C PIOTOTBS 0040 00000800 PIO3OR8 0028 PIO3OR8A 002C PIO3OR8C 002A PIO3OR8F 0029 PIO3OR8O 0028 PIO3OR8W 0028
Last updated on 5 Jun 2001 at 16:11:54 EDT.
Copyright IBM Corporation, 1990, 2001