|
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 Signed 2 EXPCPUCS CPUAD of obtainer of EXPLCKCS.
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 EXPLCKCS CSGET lock, see also EXPCPUCS
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.
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.
| |