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

#### ICLBK

Prolog

Control Block Contents
ICLBK DSECT

Storage Layout

Cross Reference (Contains links to field and bit definitions)

#### ICLBK Prolog

     NAME       : HCPICLBK
     DESCRIPTION: Indirect Call Locator Block
     COPYRIGHT -
                  THIS MODULE IS "RESTRICTED MATERIALS OF IBM"
                  5654-030 (C) COPYRIGHT IBM CORP. - 1995
                  LICENSED MATERIALS - PROPERTY OF IBM
                  SEE COPYRIGHT INSTRUCTIONS, G120-2083
     DSECT      : ICLBK
     FUNCTION   : Indirect Call Locator Block keeps information about the
                  state and the location of external symbols called by
                  HCPCALL TYPE=INDIRECT, or external symbols that reside
                  in dynamically loaded modules.
     LOCATED BY : DLUBK.DLUICL
                  ICLBK.ICLFWD
                  ICRBK.ICRADDRL
     CREATED BY : HCPICL
     DELETED BY : None.
     REFERENCES : HCPICRBK - Indirect Call Request Block
     SERIALIZED : Additions to the ICLBK chain are done under the
                  DLUBK.DLUICLLK lock.
                  If both the DLUBK.DLUICLLK lock and the ICLBK.ICLLOCK
                  lock are required, acquire the DLUBK.DLUICLLK lock
                  first.
                  Certain updates to the ICLBK require that the ICLLOCK
                  be acquired exclusive.  There are at least 4 words
                  whose changes must be coordinated.  They are
                  ICLFLAGS
                  ICLCALLS
                  ICLMSGS#
                  ICLTRSO#
                  Also, any routine that changes the ICLMSGS or ICLTRSO
                  bits must hold the DLUCPXLK lock.  CPXUNLOAD checks
                  these bits to see if the code can be unloaded and
                  therefore they must not change state while a CPXUNLOAD
                  is occurring.
                  Since there is no Compare-QuadWord-and-Swap, we need
                  the serialzation protection afforded by HCPLCLAX.
                  For other fields, for example ICLMSECS and ICLCOUNT,
                  updates by means of CDS and CS instructions are
                  satisfactory.
     COMMENTS   : The ICLBK chain is never pruned.

#### ICLBK Control Block Content

#### ICLBK DSECT

    Hex   Dec Type/Val   Lng Label (dup)    Comments
    ---- ---- --------- ---- -------------- --------
    0000    0 Structure      ICLBK          Indirect Call Locator Block
    0000    0 Address      4 ICLFWD         Fwd pointer to another ICLBK.
                                            ICLBKs are ordered by increasing
                                            value of ICLNAME.
    0004    4 Address      4 ICLCPEBK       CPEBK chain to stack when
                                            ICLCOUNT goes to zero
    0008    8 Dbl-Word     8 ICLLOCK (3)    Lockword
    0020   32 Character    8 ICLNAME        Name of the entry
    0028   40 Address      4 ICLVADDR       Virtual address of the entry
    002C   44 Address      4 ICLRADDR       Real address of the entry, if it
                                            has LOCKED attribute.
    0030   48 Bitstring    4 ICLFLAGS       Flags
    0034   52 Signed       4 ICLCALLS       Count of unfinished calls
    0038   56 Signed       4 ICLMSGS#       In use for this many message
                                            repositories.
    003C   60 Signed       4 ICLTRSO#       In use for this many TRSOURCE
                                            DATA
    0040   64 Signed       4 *              Reserved
    0044   68 Signed       4 ICLCOUNT       Calls issued this many times
    0048   72 Dbl-Word     8 ICLMSECS       Cumulative elapsed micro-sec
    0050   80 Address      4 ICLUNLDR       Address of the routine to call,
                                            or zero if not to call anybody,
                                            when the entry point name for
                                            this ICLBK is to be unloaded.
    0054   84 Signed       4 ICLUNLDP       Arbitrary data reserved for use
                                            by the ICLUNLDR routine.
    0058   88 Dbl-Word     8 ICL$END (0)    The end
    0030   48 Bitstring    1 ICLATTR        Attributes for call
              .1.. ....      ICRRLONG       X'40' Caller is LONGREG
              ..1. ....      ICRELONG       X'20' Callee is LONGREG
              ...1 ....      ICRESTA        X'10' callee uses static savearea
              .... 1...      ICRRMP         X'08' caller MP capable
              .... .1..      ICRERES        X'04' callee Resident
              .... ..1.      ICREMP         X'02' callee MP capable
              .... ...1      ICRTRC         X'01' issue TRACE instruction
    0031   49 Bitstring    1 ICLFLAG1       Flags
              .... ..1.      ICLDYNLD       X'02' This entry was dynamically
                                            loaded
    0032   50 Bitstring    1 ICLFLAG2       Flags
              1... ....      ICLMSGS        X'80' In use as a message
                                            repository. This ICLBK points to
                                            storage that was made a message
                                            repository by ASSOCIATE MSGS.
                                            This external symbol may not be
                                            CPXUNLOADed until this flag is
                                            reset by DISASSOCIATE MSGS.
              .1.. ....      ICLTRSO        X'40' In use by TRSOURCE. This
                                            ICLBK points to storage that was
                                            changed by TRSOURCE processing.
                                            This external symbol may not be
                                            CPXUNLOADed until this flag is
                                            reset by TRSOURCE DROP.
              .... 1...      ICLNRDY        X'08' Not Ready. This ICLBK is
                                            being built or is being unloaded
                                            and should not be used. Any call
                                            to this entry should take the
                                            CALLFAIL= path in HCPCALL.
              .... .1..      ICLUNRES       X'04' UNRESOLVED. Any call to
                                            this entry should take the
                                            CALLFAIL= path in HCPCALL.
              .... ..1.      ICLPAGRR       X'02' Paging error trying to
                                            page-in this LOCKED entry. Treat
                                            as if UNRESOLVED.
              .... ...1      ICLUNLOD       X'01' This entry is to be
                                            UNLOADed
    0033   51 Bitstring    1 ICLFLAG3       Flags
              ICLFLAG3       ICLNOUSE       256*(ICLNRDY+ICLUNRES+ICLPAGRR+IC
                                            LUNLOD)+(0)
         Bits that indicate that this ICLBK entry is not in shape to be used. If
         ICLFLAGS .AND. ICLNOUSE generates any nonzero bits, then the ICLBK must
         not be used to locate an external symbol.

#### ICLBK Storage Layout

    *** ICLBK - Indirect Call Locator Block
    *
    *     +---------------------------+---------------------------+
    *   0 |          ICLFWD           |         ICLCPEBK          |
    *     +---------------------------+---------------------------+
    *   8 |                                                       |
    *     =                       ICLLOCK                         =
    *     |                                                       |
    *     +-------------------------------------------------------+
    *  20 |                       ICLNAME                         |
    *     +---------------------------+---------------------------+
    *  28 |         ICLVADDR          |         ICLRADDR          |
    *     +---------------------------+---------------------------+
    *  30 |         ICLFLAGS          |         ICLCALLS          |
    *     +---------------------------+---------------------------+
    *  38 |         ICLMSGS#          |         ICLTRSO#          |
    *     +---------------------------+---------------------------+
    *  40 |///////////////////////////|         ICLCOUNT          |
    *     +---------------------------+---------------------------+
    *  48 |                       ICLMSECS                        |
    *     +---------------------------+---------------------------+
    *  50 |         ICLUNLDR          |         ICLUNLDP          |
    *     +---------------------------+---------------------------+
    *
    *** ICLBK - Indirect Call Locator Block

    *** Overlay for ICLFLAGS in ICLBK
    *
    *     +------+------+------+------+
    *  30 |:ATTR |:FLAG1|:FLAG2|:FLAG3| 34
    *     +------+------+------+------+
    *
    *** Overlay for ICLFLAGS in ICLBK

#### ICLBK Cross Reference

    Symbol         Dspl Value
    -------------- ---- -----
    ICL$END        0058
    ICLATTR        0030
    ICLCALLS       0034
    ICLCOUNT       0044
    ICLCPEBK       0004
    ICLDYNLD       0031 02
    ICLFLAGS       0030
    ICLFLAG1       0031
    ICLFLAG2       0032
    ICLFLAG3       0033
    ICLFWD         0000
    ICLLOCK        0008
    ICLMSECS       0048
    ICLMSGS        0032 80
    ICLMSGS#       0038
    ICLNAME        0020
    ICLNOUSE       0033 ICLFLAG3
    ICLNRDY        0032 08
    ICLPAGRR       0032 02
    ICLRADDR       002C
    ICLTRSO        0032 40
    ICLTRSO#       003C
    ICLUNLDP       0054
    ICLUNLDR       0050
    ICLUNLOD       0032 01
    ICLUNRES       0032 04
    ICLVADDR       0028
    ICRELONG       0030 20
    ICREMP         0030 02
    ICRERES        0030 04
    ICRESTA        0030 10
    ICRRLONG       0030 40
    ICRRMP         0030 08
    ICRTRC         0030 01

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