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

#### DSVBK

Prolog

Control Block Contents
DSVBK DSECT

Storage Layout

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 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

This information is based on z/VM V6R1.0. Last updated on 18 Feb 2010 at 08:36:27 EDT.
Copyright IBM Corporation, 1990, 2008