EXPBK Back to Index page
 
Prolog 
Control Block Contents 
   EXPBK DSECT
   EXPQUENT DSECT
Storage Layout 
Cross Reference (Contains links to field and bit definitions)
Programming Interface Information:
This information is NOT intended to be
used as Programming Interfaces of z/VM.


  EXPBK Prolog Top of page
 
 NAME       : HCPEXPBK
 DESCRIPTION: EXPOSURE BLOCK
 DSECT      : EXPBK
 FUNCTION   : The exposure block contains necessary information
              about a CP volume for paging information.
 LOCATED BY : RDEVEXPB - Points to the exposure block.
 CREATED BY : HCPRDAAT - When the CP owned volume is brought on
              line at IPL time and during the ATTACH
              command processing.
 DELETED BY : HCPRDADT - When the CP owned volume is DETACHed from
              the system.
 SERIALIZED : EXPLCKFG - A Test and Set instruction is used to set
              the lock flag on to serialize this control
              block and the IORBK control block for the
              exposure.
 RELOCATION CONSIDERATIONS : None
 COMMENTS   :
 
 
  EXPBK Control Block Content Top of page
 

 EXPBK DSECT Top of page
Hex Dec Type/Val Lng Label (dup) Comments ---- ---- --------- ---- -------------- -------- 0000 0 Structure EXPBK Paging Information Header Block 0000 0 Signed 8 EXPPHDBK (22) Header area mapped by PHDBK Flags for the exposure block. 00B0 176 Bitstring 1 EXPLCKFG Exposure lock byte. Obtained - TSGET X'FF' Released - TSREL X'00' 00B1 177 Bitstring 1 * Reserved for IBM use These flags keep the status information for this exposure. This flag contains bits, but is also manipulated with a MVI so care must be taken to understand the relationship of the bits. 00B2 178 Bitstring 1 EXPSTAT1 Exposure status flag one .... .... EXPIDLE X'00' EXPIDLE Value when exposure is idle, and unsuspended, as far as paging subsystem is aware. 1... .... EXPINTE X'80' EXPINTE Interrupt is expected. Turned on when: - a SSCH is stacked - a RSCH is issued - a CSCH is issued Turned off when: - PAHIN receives a "final" interrupt. (Suspended NOP, or an interrupt for a non-suspended NOP, or CSCH.) Left on when: - PCI only interrupt is received. .1.. .... EXPSUSPN X'40' EXPSUSPN Indicates that the device is suspended and a RSCH is needed. Turned on when EXPINTE is turned off, and the device is suspended. Turned off when a RSCH or CSCH is issued. ..1. .... EXPRSCHBC X'20' EXPRSCHBC RSCH Bad Condition code. RSCH was issued but a CC1 or CC2 was received. Turned on when a RSCH is issued and results in a CC1 or a CC2. Turned off when an interrupt is received and PAH issues a SSCH to restart the previously built package. ...1 .... EXPCSCHDN X'10' EXPCSCHDN CSCH DoNe. Turned on when a CSCH is issued. Turned off when EXPINTE is turned off. .... 1... EXPAQ X'08' EXPAQ RAS: Call has been stacked to HCPPAUAQ after a RSCH CC=3. .... .1.. EXPNOPS X'04' EXPNOPS RAS: Suspend is on in the final NOP CCW. Turned on when the final CCW has suspend indicated. Turned off when EXPINTE is turned off, or the the suspend bit is turned off and ESPSTAT2.DQINP is turned on. .... ..1. EXPSSCHDN X'02' EXPSSCHDN RAS: SSCH was stacked or gone to. Turned on when a SSCH is stacked. Turned off when EXPINTE is turned off. .... ...1 EXPRSCHDN X'01' EXPRSCHDN RAS: RSCH was issued. Turned on when a RSCH is issued. Turned off when EXPINTE is turned off. 00B3 179 Bitstring 1 EXPSTAT2 Exposure status flag two 1... .... EXPDQINP X'80' EXPDQINP Indicates a DEQUEUE in progress. Turned on when it is determined that a device needs to come to an unsuspended state. Turned off when EXPSTAT1.EXPINTE is turned off and the device is not suspended. 00B4 180 Signed 4 * Reserved for future IBM use. The PIOBK array (array of PIOBKs) contains the channel program for this exposure. Therefore it is allocated below the 2G line. Most PIOBK "work" is done using host absolute addresses. Any reference to the "previous" PIOBK in the comments refers to the PIOBK that tics to a CCW within this PIOBK. Any reference to the "next" PIOBK in the comments refers to the PIOBK that is TICed to by the TIC/NOP in this PIOBK. See PIOBK for more information concerning each PIOBK. 00B8 184 Address 4 EXPPIOARHL PIOBK Array Host Logical. Host logical address of the array of PIOBKs. 00BC 188 Address 4 EXPPIOARHA PIOBK Array Host Absolute. Host absolute address of the array of PIOBKs. 00C0 192 Address 4 EXPPIOAREND PIOBK Array End. Host absolute address of the last byte of the array of PIOBKs. 00C4 196 Signed 4 * Reserved for future IBM use. The "executing" PIOBKs for this exposure These next two pointers define the first through last PIOBKS that have been "sent" to the channel. The second pointer is updated as the channel program is being built though. Initial state - PIOEF = PIOEL = First PIOBK in Array (Arbitrary, could be any) I/O Executing state - see comments below Suspended (idle) state - PIOEF=PIOEL (suspended PIOBK) Idle (Unsuspended) state - PIOEF = PIOEL (last processed) PIOEF and PIOEL will never be zero. 00C8 200 Address 4 EXPPIOEF PIOBK Executing First. Host absolute address of the first executing PIOBK. This is the HA address of the PIOBK in the current channel program that has not been processed by HCPPAHIN (or is currently suspended). Note: In the case of a RSCH, this points to the PIOBK that is pointed into by the TIC that was resumed. In the case of a SSCH, this points to the PIOBK that has the Define Extent pointed to by CPA in the ORB. In the case when a PCI interrupt is received, this points to the next PIOBK that is not yet processed. 00CC 204 Address 4 EXPPIOEL Executing Last. "Suspended" Host absolute address of the PIOBK in the executing channel program that contains the last R/W CCW and has (ends in) either a NOP/suspend, or a NOP. 00D0 208 Address 4 EXPGATE This is the address of the PIOBK that was executed by the channel subsystem and has a suspended NOP. Set when construction of a new segment of channel program begins. Just before a segment is executed (SSCH or RSCH) the NOP in this PIOBK is changed to a TIC to the next appropriate CCW, and this field is set to 0. Its important this is not done earlier as the I/O subsystem may do a RSCH while we are still building the next CCW segment. 00D4 212 Signed 4 * Reserved for IBM use The "built" PIOBKs for this exposure These next two pointers define the first through last PIOBKS that have unprocessed CCWs that have been built, but not yet sent to the channel. When an SSCH is scheduled or a RSCH receives a CC0 then these built PIOBKs become the executing PIOBKs. Initial state - PIOBF = 0 PIOBL = 0 Reset to initial state when a SSCH is scheduled, or a RSCH receives a CC0. BKT didn't actually use/need the first 2. To be deleted. 00D8 216 Address 4 EXPPIOBF Built first. Host absolute address of the first PIOBK as a new channel program is being built. This PIOBK has a R/W CCW that is waiting to be executed. The "previous" PIOBK NOP address has been updated to point to the define extent, but is still a NOP (till just before SSCH or RSCH.) This field may be zero indicating a channel program is not currently being built. 00DC 220 Address 4 EXPPIOBL Built last. Host absolute address of the last PIOBK as a new channel program is being built. This PIOBK has a R/W CCW that is waiting to be executed. The "previous" PIOBK TIC/NOP address has been updated to point to the define extent, locate record, or R/W and has been changed to a TIC unless this is also EXPPIOBF. 00E0 224 Address 4 EXPeffLR Host absolute address of the PIOBK with the effective Locate record as a channel program is being built. The "available" PIOBKs for this exposure These next two pointers define the first through last PIOBKS that are available. These pointers may not be zero When EXPPIOAF and EXPPIOAL are equal, no PIOBKs are available (We can not use the last "available" one since it contains a TIC that the channel may want to look at if a RSCH is issued. Think - Suspended, but idle case.) When all are available, then EXPPIOAL will be the PIOBK that tics into the PIOBK at EXPIOLAF. Initial state - EXPIOAF = EXPPIOARHA EXPIOAL = HA Address of the last PIOBK in the array. Full (no PIOBKs available) EXPIOAF=EXPIOAL BKT didn't actually use/need these two pointers. to be ded. 00E4 228 Address 4 EXPPIOAF Available First. Host absolute address of the first available PIOBK. This PIOBK has the processed flag on and is available to be used to build or continue building a channel program. 00E8 232 Address 4 EXPPIOAL Available Last. Host absolute address of the last available PIOBK. This PIOBK has the processed flag on and is available to be used to build or continue building a channel program. 00EC 236 Signed 4 EXPAVAIL Number of PIOBKs available. The number of PIOBKs available. The last one, must not be used, so this will bottom out at 1. (therefore, 1 => none available.) 00F0 240 Signed 4 EXPBUILT Number of PIOBKs built. 00F4 244 Signed 4 EXPEXEC Number of PIOBKs executing. Note: This is the number of outstanding read/write CCWs that have not been processed, but have been sent to the channel. (PIORDWRO.PIOFINIS=0) RAS. Debug only? BKT 00F8 248 Dbl-Word 8 EXPLRSAVES Number of mid i/o Locate records 0100 256 Dbl-Word 8 EXPMAXED Number of times we could have used more PIOBKs. 0108 264 Dbl-Word 8 EXPSTATS (9) MinMaxAvg stats for number of PIOBKs in use at SSCH/RSCH time. 0150 336 Signed 4 * Reserved for IBM use These are deferred saveareas when all CCW packages are in use for this exposure. The queues are described in the general comments section of HCPPAGRV. 0154 340 Address 4 EXPSFDSV First deferred savearea for single reads and writes. (A PPIBK) 0158 344 Address 4 EXPSLDSV Last deferred savearea for single reads and writes. (A PPIBK) 015C 348 Signed 4 EXPCURQS Count of deferred PPIBKs on EXPSFDSV each representing 1 page read or 1 page write. 0160 352 Address 4 EXPMRDFQ Host logical address of the 0164 356 Signed 4 EXPCURQMR PPIBK that contains the queue of deferred FRMTEs (PPIFRMQG) to be read for a multiple read request. Followed by the count of pages on that queue. Mapped by EXPQUENT DSECT. 0168 360 Address 4 EXPMWDFQ Host logical address of the 016C 364 Signed 4 EXPCURQMW PPIBK that contains the queue of deferred FRMTEs (PPIFRMQG) to be written for a multiple write request. Followed by the count of pages on that queue. Mapped by EXPQUENT DSECT. 0170 368 Signed 4 EXPRedriving When we redrive a multi-read or multi-write we will move the count dequeued to here, and keep track of them. If we requeue left overs, after filling the PIOBK array, we will know how many are left. 0174 372 Bitstring 1 EXPPossArrow A binary switch. 1... .... EXPWriteNext X'80' EXPWriteNext Write next time. .... .... EXPReadNext X'00' EXPReadNext Read next time. 0175 373 Bitstring 3 * Reserved for IBM use 0178 376 Signed 4 * Reserved for IBM use 017C 380 Signed 4 * Reserved for IBM use Monitor counters. 0180 384 Signed 2 * Reserved for IBM use. 0182 386 Signed 2 EXPQCNEG Number of times EXPCURQC went neg. 0184 388 Signed 4 EXPCURQC Cardinal count of all outstanding paging/spooling reads/writes for this device. Used directly by Perfkit. Do not change offset. 0188 392 Signed 4 * Reserved for IBM use 018C 396 Address 4 EXPPAGIOR IORBK for this exposure. PAGBK for this exposure. The IORBK is always at the beginning of the PAGBK so this field does double duty. 0190 400 Signed 4 EXPCTUSI Total count of the number of times the channel program had to be terminated to allow user I/O. This is an indicator of interference between user and paging/spooling I/O. Used directly by Perfkit. Do not change offset. 0194 404 Signed 4 EXPTIMER Exposure timestamp for SSCH/RSCH. 0198 408 Signed 4 EXPINTIM Exposure timestamp at I/O interrupt time. 019C 412 Signed 4 EXPNMPIO Number of active PIOBKS at I/O interrupt time used to calc service time. 01A0 416 Signed 4 * Reserved for IBM use 01A4 420 Signed 4 * Reserved for IBM use 01A8 424 Signed 4 * Reserved for future use. 01AC 428 Signed 4 EXPBKEND (0) End of EXPBK. 000001AC EXPBSIZE *-EXPBK Size of this DSECT in Bytes 00000036 EXPSIZE (((*-EXPBK)+7)/8) Size in double-words MLOAD constants 00FFFFFF EXPMXTOT X'7FFFFFFF' Maximum total MLOAD value 007FFFFF EXPMXAVG X'007FFFFF' Maximum average MLOAD value The next two statements EXPQUENT, and EXPQANCH are used to map the multiple read and write queue fields EXPMRDFQ and EXPMWDFQ.
 EXPQUENT DSECT Top of page
Hex Dec Type/Val Lng Label (dup) Comments ---- ---- --------- ---- -------------- -------- 0000 0 Structure EXPQUENT Paging Information Header Block 0000 0 Address 4 EXPQANCH Anchor for multiple defer queues. 0004 4 Signed 4 EXPCount Count of pages on that queue.
 
 
  EXPBK Storage Layout Top of page
 
 
*** EXPBK - Paging Information Header Block
*
*     +-------------------------------------------------------+
*   0 |                                                       |
*     =                       EXPPHDBK                        =
*     |                                                       |
*     +------+------+------+------+---------------------------+
*  B0 |:LCKFG|//////|:STAT1|:STAT2|///////////////////////////|
*     +------+------+------+------+---------------------------+
*  B8 |        EXPPIOARHL         |        EXPPIOARHA         |
*     +---------------------------+---------------------------+
*  C0 |       EXPPIOAREND         |///////////////////////////|
*     +---------------------------+---------------------------+
*  C8 |         EXPPIOEF          |         EXPPIOEL          |
*     +---------------------------+---------------------------+
*  D0 |         EXPGATE           |///////////////////////////|
*     +---------------------------+---------------------------+
*  D8 |         EXPPIOBF          |         EXPPIOBL          |
*     +---------------------------+---------------------------+
*  E0 |         EXPEFFLR          |         EXPPIOAF          |
*     +---------------------------+---------------------------+
*  E8 |         EXPPIOAL          |         EXPAVAIL          |
*     +---------------------------+---------------------------+
*  F0 |         EXPBUILT          |         EXPEXEC           |
*     +---------------------------+---------------------------+
*  F8 |                      EXPLRSAVES                       |
*     +-------------------------------------------------------+
* 100 |                       EXPMAXED                        |
*     +-------------------------------------------------------+
* 108 |                                                       |
*     =                       EXPSTATS                        =
*     |                                                       |
*     +---------------------------+---------------------------+
* 150 |///////////////////////////|         EXPSFDSV          |
*     +---------------------------+---------------------------+
* 158 |         EXPSLDSV          |         EXPCURQS          |
*     +---------------------------+---------------------------+
* 160 |         EXPMRDFQ          |        EXPCURQMR          |
*     +---------------------------+---------------------------+
* 168 |         EXPMWDFQ          |        EXPCURQMW          |
*     +---------------------------+------+--------------------+
* 170 |       EXPREDRIVING        |(174) |////////////////////|
*     +---------------------------+------+--------------------+
* 178 |///////////////////////////|///////////////////////////|
*     +-------------+-------------+---------------------------+
* 180 |/////////////|  EXPQCNEG   |         EXPCURQC          |
*     +-------------+-------------+---------------------------+
* 188 |///////////////////////////|        EXPPAGIOR          |
*     +---------------------------+---------------------------+
* 190 |         EXPCTUSI          |         EXPTIMER          |
*     +---------------------------+---------------------------+
* 198 |         EXPINTIM          |         EXPNMPIO          |
*     +---------------------------+---------------------------+
* 1A0 |///////////////////////////|///////////////////////////|
*     +---------------------------+---------------------------+
* 1A8 |///////////////////////////|
*     +---------------------------+
*
*** EXPBK - Paging Information Header Block
 
*** EXPQUENT - Paging Information Header Block
*
*     +---------------------------+---------------------------+
*   0 |         EXPQANCH          |         EXPCOUNT          |
*     +---------------------------+---------------------------+
*   8
*
*** EXPQUENT - Paging Information Header Block
 
 
  EXPBK Cross Reference Top of page
 
 
Symbol         Dspl Value
-------------- ---- -----
EXPeffLR       00E0
EXPAQ          00B2 08
EXPAVAIL       00EC
EXPBKEND       01AC
EXPBSIZE       01AC 000001AC
EXPBUILT       00F0
EXPCount       0004
EXPCSCHDN      00B2 10
EXPCTUSI       0190
EXPCURQC       0184
EXPCURQMR      0164
EXPCURQMW      016C
EXPCURQS       015C
EXPDQINP       00B3 80
EXPEXEC        00F4
EXPGATE        00D0
EXPIDLE        00B2 00
EXPINTE        00B2 80
EXPINTIM       0198
EXPLCKFG       00B0
EXPLRSAVES     00F8
EXPMAXED       0100
EXPMRDFQ       0160
EXPMWDFQ       0168
EXPMXAVG       01AC 007FFFFF
EXPMXTOT       01AC 00FFFFFF
EXPNMPIO       019C
EXPNOPS        00B2 04
EXPPossArrow   0174
EXPPAGIOR      018C
EXPPHDBK       0000
EXPPIOAF       00E4
EXPPIOAL       00E8
EXPPIOAREND    00C0
EXPPIOARHA     00BC
EXPPIOARHL     00B8
EXPPIOBF       00D8
EXPPIOBL       00DC
EXPPIOEF       00C8
EXPPIOEL       00CC
EXPQANCH       0000
EXPQCNEG       0182
EXPReadNext    0174 00
EXPRedriving   0170
EXPRSCHBC      00B2 20
EXPRSCHDN      00B2 01
EXPSFDSV       0154
EXPSIZE        01AC 00000036
EXPSLDSV       0158
EXPSSCHDN      00B2 02
EXPSTATS       0108
EXPSTAT1       00B2
EXPSTAT2       00B3
EXPSUSPN       00B2 40
EXPTIMER       0194
EXPWriteNext   0174 80
 
This information is based on z/VM 6.4.0 Last updated on 24 Aug 2016 at 09:27:32 EDT.
Copyright IBM Corporation, 1990, 2016