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

#### PPABK

Prolog

Control Block Contents
PPABK DSECT

Storage Layout

Cross Reference (Contains links to field and bit definitions)

#### PPABK Prolog

     Name       : HCPPPABK
     Description: Point to Point Accounting Block.
     DSECT      : PPABK
     Function   : Contains accounting information for a point to
                  point virtual connection (virtual channel to channel
                  adapter, or an IUCV or APPC/VM connection.)
     Located by   VCTCA specific
                  - CACXPPA and CACYPPA: point to a shared PPABK
                  when 2 virtual ctc adapters are coupled.
                  IUCV & APPC/VM specific
                  - PDEPPA: When an IUCV or APPC/VM connection exists.
                  - IUCPPAS: A chain of PPABKs.  See General Notes.
                  PPAFP1: Forward pointer for PPAUSR1 chain.
                  PPAFP2: Forward pointer for PPAUSR2 chain.
     CREATED BY : For Virtual CTC adapters PPABKs are created by HCPCTVCP
                  when two virtual CTC devices are coupled.
                  For IUCV or APPC/VM connections PPABKs are created by
                  HCPIUBAC when two users establish a connection for the
                  first time.
     DELETED BY : For Virtual CTC adapters PPABKs are deleted by subroutine
                  uncouple in HCPCTV when two virtual devices are uncoupled.
                  For IUCV and APPC/VM connections, PPABKs are deleted by
                  HCPACNPP when a retrieve buffer is done.
     REFERENCES : none.
     SERIALIZED : For Virtual CTC adapter processing: fields in the
                  HCPPPABK are serialized by holding the shared adapter
                  for a pair of coupled adapters.
                  For IUCV and APPC/VM processing: fields in the HCPPPABK
                  are serialized by holding one or both user's IUCV lock.
                  Field        Is serialized by
                  ------       ***************-
                  PPAUSR1      Modified only when holding both IUCV locks.
                  PPAUSR2      Modified only when holding both IUCV locks.
                  PPAFP1       PPAUSR1's IUCV lock. (1)
                  PPAFP2       PPAUSR2's IUCV lock. (1)
                  PPAPWORK     Modified only when holding both IUCV locks.
                  PPASENT      PPAUSR2's IUCV lock. (2)
                  PPAREC       PPAUSR2's IUCV lock. (2)
                  PPATSENT     PPAUSR2's IUCV lock. (2)
                  PPATREC      PPAUSR2's IUCV lock. (2)
                  PPANSENT     PPAUSR2's IUCV lock. (2)
                  PPANREC      PPAUSR2's IUCV lock. (2)
                  PPACTOD      PPAUSR2's IUCV lock. (2)
                  The field IUCPPAS itself is serialized by holding the
                  user's IUCV lock.
     (1) This is  one so that a user may run his chain without
                  having to get the second IUCV lock.  If forced to get a
                  higher lock, he would have to release his, and this
                  would allow for the corruption of the chain while
                  waiting to get boths locks in the right order.  These
                  fields are only modified when both locks are held, but
                  each user may reference his own forward pointer.
     (2) This is  one so that a user may run his chain without
                  giving up his lock, and have access to all the data on
                  his chain.  To do this get your own lock and go down the
                  chain.  If you are "high" in the block, then you must
                  get the lower lock to access the data: but you can do
                  this without releasing your lock.  If you are "low" in
                  the block, then you have access to the data without the
                  need for the other lock.  In either case your chain will
                  remain stable as long as you hold your lock.  (See
                  HCPACO implement this, and the General note on IUCV
                  Processing for more information.)
     NOTES      : None.
     General Note :
                  Virtual Channel to Channel processing: No chains of
                  PPABKS exist in VCTCA processing.
                  IUCV Processing:
                  When an IUCV or APPC/VM connection is established
                  between two users (USERA and USERB) for the first time,
                  a PPABK is created and chained on each user's IUCVB
                  (IUCPPAS).  A PPABK is created with PPAUSR1 equal to
                  the higher VMDBK address, and PPAUSR2 equal to the
                  lower VMDBK address.  The PPABK is then chained
                  closest to the IUCPPAS for USR1 and after all the
                  PPABKS on USR2's chain that he is highest in.  This
                  allows one to shortcut out of a search once you find
                  a PPABK that you are no longer high in.  (I.E. All
                  PPABKs that a user is high in, comes first on that
                  user's IUCPPAS chain.)

#### PPABK Control Block Content

#### PPABK DSECT

    Hex   Dec Type/Val   Lng Label (dup)    Comments
    ---- ---- --------- ---- -------------- --------
    0000    0 Structure      PPABK          Point to Point Accounting Block.
    0000    0 Signed       4 PPAUSR1        Vctca: Address of one CACBK.
                                            IUCV: VMDBK of the first user of
                                            this PPABK.
    0004    4 Signed       4 PPAUSR2        Vctca: Address of other CACBK.
                                            IUCV: VMDBK of the second user of
                                            this block. Notes : There is a
                                            dependency in HCPACNPP that
                                            PPAFP2 immediately follows
                                            PPAFP1.
    0008    8 Bitstring    8 PPAFP (0)      An indexable reference to FP1 and
                                            FP2.
    0008    8 Signed       4 PPAFP1         IUCV: Forward pointer for USR1.
    000C   12 Signed       4 PPAFP2         IUCV: Forward pointer for USR2.
    0010   16 Signed       4 *              Reserved for future use.
    0014   20 Signed       4 PPAWORK        A work field for temporary use.
    0018   24 Dbl-Word     8 PPASENT        Number of bytes sent from USR1 to
                                            USR2 since last accounting record
                                            was cut.
    0020   32 Dbl-Word     8 PPAREC         Number of bytes sent from USR2 to
                                            USR1 since last accounting record
                                            was cut.
    0028   40 Dbl-Word     8 PPATSENT       Total number of bytes sent from
                                            USR1 to USR2
    0030   48 Dbl-Word     8 PPATREC        Total number of bytes sent from
                                            USR1 to USR1
    0038   56 Signed       4 PPANSENT       Total number of sends from USR1
                                            to USR2
    003C   60 Signed       4 PPANREC        Total number of sends from USR2
                                            to USR1
    0040   64 Dbl-Word     8 PPACTOD        Vctca: TOD value when devices
                                            were coupled. IUCV: TOD value
                                            when users last connected.
              00000009       PPASIZE        (*-PPABK+7)/8 size in double
                                            words
              00000048       PPABSIZE       PPASIZE*8 size in bytes

#### PPABK Storage Layout

    *** PPABK - Point to Point Accounting Block.
    *
    *     +---------------------------+---------------------------+
    *   0 |         PPAUSR1           |         PPAUSR2           |
    *     +---------------------------+---------------------------+
    *   8 |          PPAFP1           |          PPAFP2           |
    *     +---------------------------+---------------------------+
    *  10 |///////////////////////////|         PPAWORK           |
    *     +---------------------------+---------------------------+
    *  18 |                       PPASENT                         |
    *     +-------------------------------------------------------+
    *  20 |                        PPAREC                         |
    *     +-------------------------------------------------------+
    *  28 |                       PPATSENT                        |
    *     +-------------------------------------------------------+
    *  30 |                       PPATREC                         |
    *     +---------------------------+---------------------------+
    *  38 |         PPANSENT          |         PPANREC           |
    *     +---------------------------+---------------------------+
    *  40 |                       PPACTOD                         |
    *     +-------------------------------------------------------+
    *  48
    *
    *** PPABK - Point to Point Accounting Block.

#### PPABK Cross Reference

    Symbol         Dspl Value
    -------------- ---- -----
    PPABSIZE       0040 00000048
    PPACTOD        0040
    PPAFP          0008
    PPAFP1         0008
    PPAFP2         000C
    PPANREC        003C
    PPANSENT       0038
    PPAREC         0020
    PPASENT        0018
    PPASIZE        0040 00000009
    PPATREC        0030
    PPATSENT       0028
    PPAUSR1        0000
    PPAUSR2        0004
    PPAWORK        0014

This information is based on z/VM V4R3.0. Last updated on 30 Apr 2002 at 17:20:47 EDT.
Copyright IBM Corporation, 1990, 2002