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

#### CNODE

Prolog

Control Block Contents
CNODE DSECT

Storage Layout

Cross Reference (Contains links to field and bit definitions)

#### CNODE Prolog

     Name       : HCPCNODE
     Description: Collision node for MDC hash table.
     DSECT      : CNODE
     Function   : To provide mapping of a MDC overflow hash
                  table node.
     Created by : HCPFTHRD
     Deleted by : HCPFTHUD, HCPFTHDC, HCPFTUFL, HCPFTURM
     Notes      :
       The MDC hash table is comprised of a base hash table and
       collision page(s).  A hashing algorithm is used to convert
       a key to the address of a base node.  The base node is 3
       words and is either empty or holds a single TCHBK (see
       HCPTCHBK).
       Multiple keys can hash to the same base node and such
       collisions are handled via a chaining scheme that links
       the base node with additional (collision) nodes that lie
       outside the hash table proper.  The second word of the
       last (or only) TCHBK in the chain contains data relating
       to the track represented by that TCHBK.  The second word
       of all other TCHBKs contain the address of a collision
       node with the high-order bit set to one to indicate that
       there are additional nodes.  (The data words never have
       the high-order bit set to one.)
       A collision node is comprised of a TCHBK prefixed by a
       fullword containing the data that was displaced from the
       preceding TCHBK to make room for a forward pointer.
                     Base Node (in hash table)
      +------------+------------+------------+
      |                TCHBK                 |
      +------------+-----+------+------------+
                         |
      +------------------+
      |
      v                 Collision Node (in collision page)
      +------------+------------+------------+------------+
      | N-1 data   |                TCHBK                 |
      +------------+------------+------+-----+------------+
                                       |
      +--------------------------------+
      |
      v        Terminal Collision Node (in collision page)
      +------------+------------+------------+------------+
      | N-1 data   |                TCHBK                 |
      +------------+------------+------------+------------+

#### CNODE Control Block Content

#### CNODE DSECT

    Hex   Dec Type/Val   Lng Label (dup)    Comments
    ---- ---- --------- ---- -------------- --------
    0000    0 Structure      CNODE          Collision node for MDC hash
                                            table.
    0000    0 Address      4 CNONXTAV (0)   Address of next collision node if
                                            on available chain Zero => end
                                            of chain
    0000    0 Signed       4 CNOPREV        Data for previous entry
    0004    4 Bitstring   12 CNOTCHBK (0)   TCHBK in collision node
         The remainder of this DSECT maps the TCHBK that resides in the
         collision node. For details see HCPTCHBK COPY.
    0004    4 Signed       4 CNOKEY         Hash key
    0008    8 Address      4 CNOTKFMT       The hash data/pointer **TCHCOLFG
                                            EQU PFX8000S Flag to indicate
                                            CNOCDATA is a collision pointer.
                                            Marks the TCHENTRY inside the
                                            collision node as format 'b'
    000C   12 Address      4 CNOCPEBK (0)   CPEBK address
         High order bit of CNOCPEBK determines if unconditional delete is
         required. TCHUDREQ is that bit's name. Note that if this bit is on, the
         remainder of CNOCPEBK may be zero. I.E. only an unconditional delete is
         deferred.
    000C   12 Address      4 CNOADRLX (0)   Virtual address etc
    000C   12 Bitstring    1 CNOORIG (2)    SSSP of virtual address
    000E   14 Bitstring    1 CNOLOCK        Lock nibble is right half, final
                                            P of vaddr in left
    000F   15 Bitstring    1 CNOTBENT       Flags and Table index
              CNOTBENT       CNOBCKUP       PFX4 Distance to back up from the
                                            beginning of a TCHBK to the
                                            beginning of a CNODE This is
                                            length of CNOPDATA
              00000010       CNOCSIZB       *-CNODE Size of collision entry

#### CNODE Storage Layout

    *** CNODE - Collision node for MDC hash table.
    *
    *     +---------------------------+---------------------------+
    *   0 |         CNOPREV           |          CNOKEY           |
    *     +---------------------------+-------------+------+------+
    *   8 |         CNOTKFMT          |  CNOORIG    |:LOCK |:TBENT|
    *     +---------------------------+-------------+------+------+
    *  10
    *
    *** CNODE - Collision node for MDC hash table.

#### CNODE Cross Reference

    Symbol         Dspl Value
    -------------- ---- -----
    CNOADRLX       000C
    CNOBCKUP       000F CNOTBENT
    CNOCPEBK       000C
    CNOCSIZB       000F 00000010
    CNOKEY         0004
    CNOLOCK        000E
    CNONXTAV       0000
    CNOORIG        000C
    CNOPREV        0000
    CNOTBENT       000F
    CNOTCHBK       0004
    CNOTKFMT       0008

This information is based on z/VM V4R3.0. Last updated on 1 May 2002 at 08:14:23 EDT.
Copyright IBM Corporation, 1990, 2002