|
Hex Dec Type/Val Lng Label (dup) Comments
---- ---- --------- ---- -------------- --------
0000 0 Structure AvlZn Available List Zone
0000 0 Unknown 1 AvlCach0 (256) Cache line 0
0100 256 Unknown 1 AvlCach1 (768) Cache line 1-3 Contigs control
0400 1024 Unknown 1 AvlCach4 (768) Cache line 4-6 Singles control
0700 1792 Unknown 1 AvlCach7 (256) Cache line 7
00000800 AvlZnSz *-AvlZn Size of AvlZn in bytes
00000100 AvlSizedw (*-AvlZn+7)/8 Size of AvlZn in
d-words
00000800 AvlZnNxt * Next AvlZn if in the same page
The size of the AvlZn is checked here, so it will be
verified wherever the AvlZn is used.
The size of the AvlZn is also checked in HCPISM, where
the AvlZn is carved from a page gotten by HCPGETST.
The maximum number of zones B2G and A2G, useful for
allocating arrays and things.
00000050 AvlZnsB2G MAXRPROC Max number of B2G zones
00000400 AvlZnsA2G 1024 Max number of A2G zones
Cache line 0
0000 0 Bitstring 1 AvlFlag0 Flag0 Must be same offset as
anoFlag0 (Maintain
MTRAZN_AvlFlag0, STOAZN_AvlFlag0)
00000080 IsAnode x'80' Off in AvlZns. (See
anoAnode).
00000040 ToTheLeft x'40' Node or Zone, to the left.
000000C0 AvlFlag0React IsAnode+ToTheLeft Cleared when
reactivated. IsAnode Will not be
on anyway. ToTheLeft Will be
re-set if so.
0001 1 Bitstring 1 AvlFlag1 Flag1 (Description) (Maintain
MTRAZN_AvlFlag1, STOAZN_AvlFlag1)
1... .... AvlIsA2G X'80' Zone holds frames >2G
.1.. .... IsStatic X'40' Is in HCPRSM, not Free
storage.
00000020 AvlIsRecon x'20' AvlZn is a reconfigurable
zone. (May be vacated by SET
STORE.) This bit may go off
unserialized In the DSRBase AvlZn
it is serialized under the lock.
But in subsequent AvlZns (to the
base) it can go off without the
lock held (specifically during a
conversion to permanent).
00000000 AvlIsPerm x'00' AvlZn is a permanent zone.
AvlIsPerm is essentially just
"not AvlIsRecon". ALL testing to
distinguish PERM vs RECONFIG
should test AvlIsRecon. Do not
use AvlIsPerm.
...1 .... AvlIsDSRBase X'10' This AvlZn is the first of
a group of zones that make up one
DSR unit. Only on for zones with
AvlIsRecon on.
.... 1... AvlR2PPending X'08' A change from
reconfigurable to Permanent is
pending.
00000004 AvlDummy x'04' This is a dummy AvlZn which
is just an anchor. (see
AvlNoAlloc).
0000007C AvlFlag1React IsStatic+AvlIsRecon+AvlIsDSRBase+
AvlR2PPending+AvlDu mmy Bits
cleared during reactivation.
IsStatic Won't be on anyway.
AvlIsRecon Will be re-set as
needed. AvlIsDSRBase Will be
re-set as needed. AvlR2PPending
Won't be on anyway. AvlDummy
Won't be on anyway.
0002 2 Bitstring 1 AvlNoAlloc Reasons not to allocate from this
available zone. If any of this
byte's bits is on, frames must
not be removed from this zone.
Any logic that transitions
AvlNoAlloc from non-zero to zero
must call HCPISMZO. nb: When
AvlDeactive is found ON, all
other bits should be ignored, and
should have been turned off.
(Maintain MTRAZN_AvlNoAlloc,
STOAZN_AvlNoAlloc)
1... .... AvlVacating X'80' The zone is in the process
of being vacated.
...1 .... AvlDeactive X'10' The zone was vacated, and
has not been re-activated yet.
vlDummy EQU x'04' This is a dummy
AvlZn which is just an anchor.
(Defined in AvlFlag1).
.... ..1. AvlEmpty X'02' No frames have ever been
available in this zone. nb: This
is not an indicator that the zone
has been depleted of frames.
Looking for AvlNoAllocReact? See
HCPISM:ClrAvlZn
0003 3 Bitstring 1 AvlDSRFlag A flag for DSR status.
1... .... AvlBeenTried X'80' AvlBeenTried This DSRU-zone
has already been selected for
vacating and failed at least once
during this DMD.
1... .... AvlDSRFlagReact
AvlBeenTried AvlDSRFlagReact
Cleared during reactiv
AvlBeenTried Re-set as needed.
0004 4 Bitstring 1 AvlConvertReason
Reason code this zone was
converted from a reconfigurable
zone to a permanent zone.
.... ...1 AvlPermNeed X'01' A frame was requested that
had a usage code requiring a
frame from permanent storage. One
was not found after an exhaustive
search.
.... ..1. AvlContigNeed X'02' Contiguous frames were
requested and could not be found
after an exhaustive search.
.... ..11 AvlPinNeed X'03' A pin occurred that
required a permanent frame. One
was not found after an exhaustive
search.
0005 5 Bitstring 1 AvlFlag2 Initialization / status flags.
1... .... AvlOFB x'80' AvlOFB AvlZn is open for
business.
.1.. .... AvlMetaDone x'40' AvlMetaDone AvlMetaFrames
has been set
.... 1... AvlInArray x'08' AvlInArray Zone has been
placed in the zone array. (Never
removed.)
.... .1.. AvlInTree x'04' AvlInTree Zone has been
placed in the zone tree. (Removed
when vacated, or temporarily for
conversion.)
.... ..1. AvlInRings X'02' AvlInRings Zone has been
placed in the rings (Removed when
vacated, or temporarily for
conversion.)
.... ...1 AvlIZ x'01' AvlIZ HCPISGIZ has been
called.
11.. .111 AvlFlag2React AvlOFB+AvlMetaDone+AvlInTree+AvlI
nRings+AvlIZ AvlFla AvlOFB Will
be re-set as needed. AvlMetaDone
Will be re-set as needed.
AvlInTree Won't be on anyway.
AvlInRings Won't be on anyway.
AvlIZ Will be re-set as needed.
0006 6 Bitstring 1 * (2) Reserved for IBM use.
0008 8 Signed 2 AvlIndex Index into AvlZn arrays:
RSAUGALSa2g/RSAUGALSb2g
000A 10 Signed 2 AvlRF Repetition factor. Number of
times to use this zone before
moving on. A power of 2 depending
on the ratio of the sizes of
zones <2G to >2G and the
AvlRFShift factor. Set in
PLSAvlUi after obtaining the
lock. PLSAvlUi counts down for
reuse. Zero, or negative in
PLSAvlUi means reset.
00000008 AvlRFShift 8 Arbitrary number to shift RF to
increase usage.
000C 12 Signed 4 * Reserved for IBM use. The
following fields are for the
queuing and management of
multiple available zones.
See Serialization regarding Avl_P
All references to AvlFPx/AvlBPx are indexed, meaning they
should be of form.
LLGF AvlFPx(Rn) Where Rn=Avlx1, Avlx2, ... etc.
or
LLGF AvlFPx+Avlxn
See prolog for details, must not be followed from Array.
0010 16 Address 4 AvlFPx Forward pointer. Circular. Index
0014 20 Address 4 AvlBPx Back pointer. Circular.
0018 24 Address 4 * Forward pointer. Circular. Index
001C 28 Address 4 * Back pointer. Circular.
0020 32 Address 4 * Forward pointer. Circular. Index
0024 36 Address 4 * Back pointer. Circular.
0028 40 Address 4 * Forward pointer. Circular. Index
002C 44 Address 4 * Back pointer. Circular.
0030 48 Address 4 * Forward pointer. Circular. Index
0034 52 Address 4 * Back pointer. Circular.
0038 56 Address 4 * Forward pointer. Circular. Index
003C 60 Address 4 * Back pointer. Circular.
0040 64 Address 4 * Forward pointer. Circular. Index
0044 68 Address 4 * Back pointer. Circular.
0048 72 Signed 4 * Reserved for IBM use.
004C 76 Address 4 AvlBase A(base AvlZn) If AvlIsRecon Valid
in the base also (points to
self.) For the differences
between AvlLow:High, AvlStart:End
and AvlInlo:inHi see general
comments in the prolog.
0050 80 Address 8 AvlLow First FRMTE address that belongs.
0058 88 Address 8 AvlHigh Last FRMTE address that belongs.
0060 96 Address 8 AvlStart Frame Table Scan Start
0068 104 Address 8 AvlEnd Frame Table Scan End
0070 112 Address 8 AvlInLo Frame Table Initialization Low
0078 120 Address 8 AvlInHi Frame Table Initialization High
0080 128 Character 8 AvlCID 8 Character identifier. (Used for
monitor records and RAS.) Ensure
AvlZnLck is d-word aligned. XL()
is used so HCPISM FFMask macro
has a true length. Unfortunately,
XL() ruins alignment enforcement.
0088 136 Bitstring 48 AvlZnLck AvlZnLck Locks both the AvlListC
and the AvlListS lists. This lock
is obtained & released via macros
HCPLKAV and HCPULAV.
00B8 184 Signed 8 AvlVacateFailed
Number of times an attempt was
made to vacate this AvlZn without
success. Does not include cancel
requests due to paging threshold
or by user request. Cleared when
zone reactivated.
00C0 192 Signed 8 AvlMetaFrames Number of FRMCP-type frames
allocated to support memory
structures. In a permanent zone
these are permanently allocated
and may be used to support any
permanent memory. In a
reconfigurable zone, they are
specifically allocated to support
the DSR-Unit only and can be
reclaimed when the DSR-unit is
vacated, and unassigned. Be
aware, this field is important to
reconfigurable zones and is
accurate, in permanent zones less
than IPLPERM this count may not
be accurate. (HCPISM)
00C8 200 Address 4 AvlVCZBK Pointer to vacate zone block
should only be NON-ZERO when
AvlVacating is on.
00CC 204 Signed 4 AvlVacDiscPerm Count of permanent FRMTEs the
vacator discovered attempting to
vacate this zone.
00D0 208 Signed 8 AvlCreateTime TOD clock at activation time.
00D8 216 Signed 8 AvlInIncrTB Address Increment number for the
last successful Test Block for
AvlInLo:Hi. Initial value is
zero.
00E0 224 Signed 8 * Reserved for IBM
00E8 232 Signed 8 * Reserved for IBM
00F0 240 Signed 8 * Reserved for IBM
Positioning the eye catcher at the end of cache line 0
00F8 248 Character 8 AvlEye Eye catcher
Cache lines 1-3
0100 256 Signed 8 AvlListC (93) Contigs list anchor.
Cache lines 4-6
0400 1024 Signed 8 AvlListS (93) Singles list anchor.
Cache line 7
The next CKMAINTs ensure that certain fields are
on a quadword boundary. Note, this only works because
we know that the AvlZn is on a cache line boundary.
QuadWord alignment is required to update two Dwords
with a single CDSG.
Verify that we are at qword alignment.
0700 1792 Address 8 AvlZnRetSingStk
Return stack of singles. Points
to FRMTE chain. Empty = StgEOQ.
Forward pointer chained.
Terminator = StgEOQ.
0708 1800 Signed 8 AvlZnRetSingCnt
Return stack singles count. Empty
= 0 Verify that we are at qword
alignment.
0710 1808 Address 8 AvlZnRetContStk
Return stack of contigs. Points
to FRMTE chain. Empty = StgEOQ.
Forward pointer chained.
Terminator = StgEOQ.
0718 1816 Signed 8 AvlZnRetContCnt
Return stack contigs count. Empty
= 0
0720 1824 Signed 8 AvlNotiCnt Count of not initialized FRMTEs.
These FRMTEs may be initialized
and added to the available lists
by memory initialization. (On
demand or Lazy.) Typically should
be considered "available" for
contigs request as they are
likely contiguous. However, until
fully initialized, there is no
guarantee as there may be some in
error.
These counts are updated just before the lock is
released. However, it would be possible, though
unlikely that the stacked counts AvlZnRetSingCnt
and AvlZnRetContCnt are not accurately included
due to timing. This is why HCPPTGFZ does it own
calculations and does not simply use these counts.
0728 1832 Dbl-Word 8 AvlOldCounts (0)
Beginning of the old counts.
0728 1832 Signed 8 AvlContigsOldCnt
The count of frames on this zone
available for a contigs request
at the time the lock was last
released.
0730 1840 Signed 8 AvlUPSinglesOldCnt
The count of frames on this zone
available for a fully authorized
(Auth2T and AuthC) singles
request at the time the lock was
last released.
0738 1848 Signed 8 AvlPSinglesOldCnt
The count of frames on this zone
available for a minimally
authorized (^Auth2T and ^AuthC)
singles request at the time the
lock was last released.
0740 1856 Address 4 * Reserved for IBM
0744 1860 Signed 4 AVLTACPT Local copy of TACPT/(number of
active zones.)
0748 1864 Signed 4 AVLT2SPT Local copy of T2SPT/(number of
active zones.)
074C 1868 Address 4 AvlParent Address of parent Anode.
0750 1872 Signed 8 AvlOfflineECnt Count of offline frames due to
error, not due to holes. This
count may not be accurately
maintained during initial system
memory initialization.
0758 1880 Signed 8 AvlOfflineCCnt Count of offline frames due to
holes in memory. This count may
not be accurately maintained
during initial system memory
initialization.
0760 1888 Signed 8 * (20) Reserved, to end of Cache line
End of the AvlZn
Define a local DSECT that maps a UGAL anchor.
This facilitates logic when manipulating the lists.
Hex Dec Type/Val Lng Label (dup) Comments
---- ---- --------- ---- -------------- --------
0000 0 Structure AvlListAnc Available List Zone
0000 0 Address 8 AvlListFP Forward pointer. Points to self
when empty.
0008 8 Address 8 AvlListBP Backward pointer. Points to
forward pointer when empty.
0010 16 Signed 8 AvlListCnt Count of FRMTEs on the list. Zero
when empty.
0018 24 Signed 8 AvlListMIReq MI Count of requests.
0020 32 Signed 8 AvlListMIRet MI Count of returns.
0028 40 Signed 8 AvlListMIRep MI Count of replenishes
0030 48 Signed 8 AvlListMIOF MI Count of FRMTES orphaned from
0038 56 Signed 8 AvlListMIOT MI Count of FRMTES orphaned to
0040 64 Signed 8 AvlListMIBPT MI Count of FRMTEs back pocketed.
(Usually to swap to make
contigs.)
0048 72 Signed 8 AvlListMIBPR MI Count of FRMTEs "returned"
that were in a back pocket.
(Usually to swap to make
contigs.)
0050 80 Signed 8 * Reserved for IBM use.
0058 88 Signed 4 AvlListLWM Low water mark of count. Reset by
threshold manager.
005C 92 Signed 4 * (0) Serialized word. (Serialized by
AvlZnLck.)
005C 92 Bitstring 1 * Reserved for IBM use.
005D 93 Bitstring 1 * Reserved for IBM use.
005E 94 Bitstring 1 AvlListCH Count high by this much.
005F 95 Bitstring 1 * Reserved for IBM use
0060 96 Signed 8 AvlHistMIReq Historical Count of requests.
0068 104 Signed 8 AvlHistMIRet Historical Count of returns.
0070 112 Signed 4 * Reserved for IBM use.
0074 116 Signed 4 * Reserved for IBM use.
0078 120 Signed 4 * Reserved for IBM use.
007C 124 Signed 4 * Reserved for IBM use.
0080 128 Bitstring 1 AvlListDsc Description flag (Never changes
once set.) IsA2G EQU X'80' Anchor
holds frames >2G
.1.. .... AvlIsContig X'40' Anchor holds contigs
0081 129 Bitstring 1 * Reserved for IBM use.
0082 130 Bitstring 1 * Reserved for IBM use.
0083 131 Bitstring 1 * Reserved for IBM use.
0084 132 Address 4 * Reserved for IBM use.
0088 136 Signed 8 AvlListDbg A debug field.
0090 144 Signed 8 AvlSTQstats (15)
Stats for requests.
0108 264 Signed 8 AvlSTTstats (15)
Stats for returns.
0180 384 Signed 8 AvlSTPstats (15)
Stats for replenishment
01F8 504 Signed 8 AvlSTOTstats (15)
Stats for Orphan To
0270 624 Signed 8 AvlSTOFstats (2)
Stats for Orphan From
000002E8 AvlListAncBS *-AvlListAnc Byte size.
0000005D AvlListAncDW (AvlListAncBS+7)/8 Double word
size.
Define a local DSECT that maps the stats in the available
lists.
Notes : This DSECT is used significantly in macros. For
this reason, they do HCPUSINGs. If an HCPUSING is used
in code, it should not be done over associated macros.
Serialization. Some fields are serialized by the
Available zone lock (ALL) and some fields are serialized
by the RSAALUST TS lock (ALU).
| |