|
Programming Interface Information:
This information is NOT intended to be used as Programming Interfaces of z/VM. |
DSVBK
Control Block Contents
DSVBK DSECT
Cross Reference (Contains links to field and bit definitions)
DSVBK Prolog
Name : HCPDSVBK
Description: DiSpatch Vector BlocK
DSECT : DSVBK
Function : The DSVBK maps the format of a Processor Local
Dispatch Vector (PLDV). There is one PLDV for each
real CPU, plus an additional one to contain Master-
Only work. This DSECT maps the storage defined in
the module HCPDSV.
Located by : HCPDSVMS is the address of the Master-Only PLDV.
HCPDSVST is the starting address of the other PLDVs.
They are contiguous in storage.
Created by : The PLDVs are DCed in module HCPDSV.
Deleted by : Never deleted
DSVBK Control Block Content
DSVBK DSECT
Hex Dec Type/Val Lng Label (dup) Comments
---- ---- --------- ---- -------------- --------
0000 0 Structure DSVBK DiSpatch Vector BlocK
Format of the header:
00000000 DSVHEADR * Base value to be used when
referencing the PLDV header.
0000 0 Bitstring 1 DSVHDWKB Byte of Work Bits
1... .... DSVDSCAN X'80' DSVDSCAN A Steal Task may
need to be started
.1.. .... DSVRCGAL X'40' DSVRCGAL A foreground
replenish of the cleared global
available list is required
..1. .... DSVNOOWN X'20' DSVNOOWN High priority
reclaim noown resources
...1 .... DSVSXSPM X'10' DSVSXSPM High priority
SXSPM work
.... 1... DSVFOBTR X'08' DSVFOBTR FOB list trim
function
0001 1 Bitstring 1 DSVHDFLG Flag byte for PLDV status
1... .... DSVHDOFL X'80' DSVHDOFL Set when PLDV has
"overflowed"
.1.. .... DSVTIDLE X'40' DSVTIDLE Set to indicate
that a scan should be made of the
test-idle users by HCPDSP.
...1 .... DSVIMBAL X'10' DSVIMBAL Possible processor
workload imbalance
.... 1... DSVNOPTL X'08' DSVNOPTL We could not
obtain the PTIL lock for any of
the VMDBKs in the master-only
PLDV.
.... .1.. DSVNEWRK X'04' DSVNEWRK Used to tell
HCPSTLWT that new work was added
to this PLDV between the time the
dispatcher released the PLDV lock
and when HCPSTLWT turns on the
wait bit in SRMCPUWT. This is
necessary since the dispatcher
does not hold the scheduler lock
exclusive or the PLDV lock during
that time and so another
processor could add work to the
PLDV and the dispatcher could go
into wait state without knowing
that work is available. The PLDV
lock must be held to turn this
bit on or off.
0002 2 Address 1 DSVHDFRE Anchor of the "entries not in
use" queue.
0003 3 Address 1 DSVHDWRK Anchor of the "entries in use"
queue.
0004 4 Signed 4 DSVNXTDV Pointer to the next dispatch
vector in a circular linked list
of dispatch vectors that belong
to CPUs of the same CPU type.
i.e: zIIP,zAAP,CP,IFL. Protected
by scheduler lock.
0008 8 Signed 4 DSVLOREJ Lowest-value (best) priority
which was rejected from this PLDV
000C 12 Signed 2 DSVUSERC User count - number of VMDBKS in
this PLDV
000E 14 Address 1 DSVLSTEN Last entry in the PLDV
000F 15 Address 1 * Reserved for future IBM use
0010 16 Dbl-Word 8 DSVLOCK (6) Lock area for the PLDV lock. This
lock is a formal exclusive spin
lock and it is used to serialize
access to a PLDV. The HCPLKPLD
and HCPULPLD macros are used to
obtain and release it. At least a
share of the scheduler lock must
be held before requesting this
lock. This means that any PLDV
can be accessed or even changed
without its PLDV lock if the
scheduler lock is held in
exclusive mode. More than one
PLDV lock can be held by a
processor only if the scheduler
lock is first held in exclusive
mode. The scheduler lock cannot
be obtained in exclusive mode
while a PLDV lock is held.
00000040 DSVHDLEN *-DSVHEADR Length in bytes of the
PLDV header.
Format of each entry:
00000040 DSVENTRY * Base value to be use when
referencing a PLDV entry.
0040 64 Address 3 DSVVMDBK Bits 0 to 19 of the user's VMDBK
address. Bits 20 to 31 are known
to be zero and need not be stored
in the Vector entry.
1... .... DSVINUSE X'80' DSVINUSE High-order bit is
set when the PLDV entry is "in
use", whenever the entry is in
the chain starting from DSVHDWRK.
0042 66 Bitstring 1 DSVFLAGS A flag nibble
.... 1... DSVNOSTL X'08' DSVNOSTL Set when work MUST
not be stolen, in order to
respect VMDBK's affinity
requirements
0043 67 Address 1 DSVFPNT Forward pointer to next entry in
queue. Zero if this is the last
entry.
0044 68 Signed 4 DSVPRIOR A representation of this VMDBK's
priority in the dispatch list.
The value in this field is a
function of the VMDBK's VMDDPRTY.
00000008 DSVENTLN *-DSVENTRY Length in bytes of a
PLDV entry
0000000E DSVMAXUS 14 Maximum number of users in a
PLDV
00000050 DSVRESER 80 Number of reserved bytes
following the PLDV entries
00000100 DSVLEN DSVHDLEN+DSVMAXUS*DSVENTLN+DSVRES
ER Length in bytes of a PLDV.
00000020 DSVSIZE (DSVLEN+7)/8 Size in doublewords
of a PLDV
DSVBK Storage Layout
*** DSVBK - DiSpatch Vector BlocK
*
* +------+------+------+------+---------------------------+
* 0 |:HDWKB|:HDFLG|:HDFRE|:HDWRK| DSVNXTDV |
* +------+------+------+------+-------------+------+------+
* 8 | DSVLOREJ | DSVUSERC |:LSTEN|//////|
* +---------------------------+-------------+------+------+
* 10 | |
* = DSVLOCK =
* | |
* +--------------------+----------------------------------+
* 40 | DSVVMDBK | 43
* +--------------------+
*
*** DSVBK - DiSpatch Vector BlocK
*** Overlay for DSVVMDBK+2 in DSVBK
*
* +------+------+---------------------------+
* 40 ... 42 |:FLAGS|:FPNT | DSVPRIOR |
* +------+------+---------------------------+
* 48
*
*** Overlay for DSVVMDBK+2 in DSVBK
DSVBK Cross Reference
Symbol Dspl Value -------------- ---- ----- DSVDSCAN 0000 80 DSVENTLN 0044 00000008 DSVENTRY 0010 00000040 DSVFLAGS 0042 DSVFOBTR 0000 08 DSVFPNT 0043 DSVHDFLG 0001 DSVHDFRE 0002 DSVHDLEN 0010 00000040 DSVHDOFL 0001 80 DSVHDWKB 0000 DSVHDWRK 0003 DSVHEADR 0000 00000000 DSVIMBAL 0001 10 DSVINUSE 0040 80 DSVLEN 0044 00000100 DSVLOCK 0010 DSVLOREJ 0008 DSVLSTEN 000E DSVMAXUS 0044 0000000E DSVNEWRK 0001 04 DSVNOOWN 0000 20 DSVNOPTL 0001 08 DSVNOSTL 0042 08 DSVNXTDV 0004 DSVPRIOR 0044 DSVRCGAL 0000 40 DSVRESER 0044 00000050 DSVSIZE 0044 00000020 DSVSXSPM 0000 10 DSVTIDLE 0001 40 DSVUSERC 000C DSVVMDBK 0040
Copyright IBM Corporation, 1990, 2007