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

#### PIOBK

Prolog

Control Block Contents
PIOBK DSECT

Storage Layout

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+CCWIDA - READ or WRITE CCW
                                            flag field ESAME build default:
                                            Command Chaining plus Indirect
                                            Data Addressing
    0022   34 Signed       2 PIORDWRC       '1000' - READ or WRITE CCW count
    0024   36 Address      4 PIORDWRA       - READ or WRITE CCW IDAW address
                                            in ESAME 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
    0030   48 Signed       8 PIOEIDAW       - Format-2 IDAW (entire 4K)
         PIOBK definitions specifically for FBA paging devices
    0000    0 Bitstring    8 PIOLCDA        - Locate CCW data area (mapped by
                                            LCDA DSECT)
    0008    8 Signed       8 PIOFIDAW       - Format-2 IDAW (entire 4K)
    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 PIOMISC in PIOBK
    *
    *     +-------------------------------------------------------+
    *  30 |                       PIOEIDAW                        |
    *     +-------------------------------------------------------+
    *  38
    *
    *** Overlay for PIOMISC in PIOBK

    *** Overlay for PIOINITL in PIOBK
    *
    *     +-------------------------------------------------------+
    *   0 |                       PIOLCDA                         |
    *     +-------------------------------------------------------+
    *   8 |                       PIOFIDAW                        |
    *     +-------------------------------------------------------+
    *  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
    PIOEIDAW       0030
    PIOFCC         0032
    PIOFCCP        0032
    PIOFIDAW       0008
    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

This information is based on z/VM V4R3.0. Last updated on 1 May 2002 at 09:42:33 EDT.
Copyright IBM Corporation, 1990, 2002