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 RELOCATION CONSIDERATIONS : None
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 All bit manipulations must be serialized by compare-and-swap logic. See note in block comment above. 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. .... ..1. DSVOFLER X'02' DSVOFLER Indicates that this PLDV had the DSVHDOFL/DSVLOREJ mismatch error at least one time 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 DSVOFLER 0001 02 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, 2011