Programming Interface Information:
This information is NOT
intended to be
used as Programming Interfaces of VM/ESA. It is to be used for diagnosis only. |
ICLBK
Cross Reference (Contains links to field and bit definitions)
ICLBK Prolog
NAME : HCPICLBK DESCRIPTION: Indirect Call Locator Block STATUS : VM/ESA Version 2, Release 1.0 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 .... 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 | * +---------------------------+---------------------------+ * 58 | | * = ICL$END = * | | * +-------------------------------------------------------+ * *** ICLBK - Indirect Call Locator Block *** Overlay for ICLFLAGS in ICLBK * * +------+------+------+------+ * 30 |:ATTR |:FLAG1|:FLAG2|:FLAG3| 34 * +------+------+------+------+ * *** Overlay for ICLFLAGS in ICLBK
ICLBK Cross Reference
(contains links to field and bit definitions)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
ICREMP 0030 02
ICRERES 0030 04
ICRESTA 0030 10
ICRRMP 0030 08
ICRTRC 0030 01
Last updated on 3 Aug 1999 at 12:04:56 EDT.
Copyright IBM Corporation, 1990, 1999