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.

FREBK

Prolog  

Control Block Contents  

FREBK DSECT

Storage Layout  

Cross Reference (Contains links to field and bit definitions)  

FREBK Prolog

 NAME       : HCPFREBK
 DESCRIPTION: FREE STORAGE BLOCK
 DSECT      : FREBK
 FUNCTION   :
              MAPS A FREE STORAGE BLOCK HEADER AND TRAILER
              FOR BOTH ACTIVE AND INACTIVE FREE STORAGE BLOCKS.
 CREATED BY : HCPFREE OR HCPFREVM WHEN A BLOCK IS
              REQUESTED.  THIS BLOCK IS NEVER ALLOCATED
              AS A SEPARATE BLOCK.
 DELETED BY : HCPFRET WHEN A BLOCK IS RETURNED TO
              FREE STORAGE.  THIS BLOCK IS NEVER
              DEALLOCATED AS A SEPARATE BLOCK.
 SERIALIZED :
              IT IS THE RESPONSIBILITY OF THE REQUESTOR TO
              ENSURE THAT ACCESS TO THE FREE STORAGE BLOCK IS
              SERIALIZED.
 NOTES      : WHEN A FREE STORAGE BLOCK IS ISSUED TO SATISFY A
              FREE STORAGE REQUEST, THE FREE STORAGE MANAGER
              PLACES A ONE DOUBLEWORD HEADER AND A TWO
              DOUBLEWORD TRAILER AROUND THE BLOCK. THESE AREAS
              ARE USED FOR DEBUGGING PURPOSES.
              WHEN THE BLOCK IS RETURNED, THESE AREAS ARE
              EXAMINED.  IF EITHER OR BOTH HAVE BEEN CORRUPTED, AN
              ABEND IS ISSUED.

 

FREBK Control Block Content


FREBK DSECT

Hex Dec Type/Val Lng Label (dup) Comments ---- ---- --------- ---- -------------- -------- 0000 0 Structure FREBK FREE STORAGE BLOCK THIS IS A PICTURE OF HOW THE FIELDS IN THIS DSECT ARE ACTUALLY USED: +-------------------------------------------------------+ * 0 | FREHEADR | * +-------------------------------------------------------+ * 8 : : : (CONTROL BLOCK) : * : : * +-------------------------------------------------------+ * XX | FRETRALR | * | | +-------------------------------------------------------+ * XX+10 THE FREE STORAGE HEADER (FREHEADR) AND FREE STORAGE TRAILERS (FRETRALR) AREA PROVIDED AS DEBUGGING AIDS FOR FREE STORAGE RELATED PROBLEMS. THE FREE STORAGE HEADER IMMEDIATELY PRECEDES THE START OF THE FREE STORAGE BLOCK ISSUED IN RESPONSE TO AN HCPFREE OR HCPFREVM CALL. THE TRAILER IMMEDIATELY FOLLOWS THE FREE STORAGE REQUESTED BY THE CALLER. THE EXACT FORMAT/CONTENT OF THESE FIELDS DEPENDS ON WHETHER THE FREE STORAGE BLOCK IS ACTIVE OR INACTIVE. 0000 0 Dbl-Word 8 FRESTRT (0) START OF VARIABLE LENGTH DATA 0000 0 Dbl-Word 8 FREHEADR FREE STORAGE BLOCK HEADER 00000008 FREHEADL *-FREHEADR LENGTH OF HEADER IN BYTES 0000 0 Dbl-Word 8 FRETRALR (2) FREE STORAGE BLOCK TRAILER 00000010 FRETRALL *-FRETRALR LENGTH OF TRAILER IN BYTES 00000003 FRERECL (FREHEADL+FRETRALL+7)/8 SIZE IN DOUBLE WORDS 0000 0 Signed 4 FREESIZE (0) # OF DWORDS OF STORAGE REQUESTED 0000 0 Signed 2 * Mini-eyecatcher for SPS else zero 0002 2 Signed 2 FREHSIZE Actual count of DWs requested Notes : The maximum allowable size value for FRETSIZE is the number of doublewords which can fit into a single 4K page (not counting the free storage header and trailer), or 509 doublewords, x'1FD'. A FREHSIZE value of x'FAB' in active subpooled free storage blocks is not a size, but is used to indicate that the block is an active "fast allocated block". 0004 4 Signed 4 FRESUBBK (0) Address of SUBBK for subpool blk 0004 4 Character 4 FREESFLG ALLOCATED BLOCK CHARACTER STRING 0000 0 Character 4 FREEID CONTROL BLOCK'S IDENTIFIER (THE FIRST CHARACTER IS '<', AND THE ID FOR UNDEFINED BLOCKS IS '<<<<' ) 0004 4 Signed 4 FREFSCBK (0) Addr of storage obtainers FSCBK 0004 4 Character 4 FREEEFLG CHARACTER STRING '<<<<' 0008 8 Signed 4 FREEDISP REQUEST'S OFFSET IN CALLING MODULE (1ST HALF WORD = X'00 00') 000C 12 Character 4 FREEMOD MODULE ID OF CALLING MODULE THE FIRST BYTE'S ALWAYS SET TO 0 0000 0 Signed 4 FREEPNT PNTR TO NEXT BLOCK IN FREE STORAGE CHAIN OR 0 (IF END-OF-CHAIN) 0004 4 Signed 4 FRETSIZE Size of available block in DWs or the size in bytes for a larger than subpool size block that is on the free storage chain Notes : For for subpooled free storage, FRETSIZE as such is not used. Instead the address of the SUBBK which represents this subpool remains here in the second word of the free storage header (as field FRESUBBK). Since the maximum allowable value for FRETSIZE for normal free storage is 509 (x'1FD'), any larger value in this field indicates that the block in question is in a frame used for subpooled free storage (since SUBBKs can't reside in low prefix page addresses like x'1FD' and below). However, in order to use this fact to distinguish between types, caution must be used, since the high order bit of the SUBBK address is used as a free storage garbage collection flag. Also note that in *active* subpooled free storage blocks, a value of x'FAB' in the actual requested size in dws (in FREHSIZE) is not a size, but an indicator that the block is an active "fast allocated block". 0000 0 Character 4 FRETID CONTROL BLOCK'S IDENTIFIER (THE FIRST CHARACTER IS '<', AND THE ID FOR UNDEFINED BLOCKS IS '<<<<' ) THIS FIELD IS PRESERVED FROM THE HCPFREE CALL WHICH ORIGINALLY OBTAINED THIS CONTROL BLOCK 0004 4 Character 4 FRETMOD MODID OF HCPFRET CALLER THE FIRST BYTE'S ALWAYS SET TO 0 0008 8 Signed 2 FRETDISP DISPL INTO MODID OF HCPFRET CALL 000A 10 Bitstring 1 FREECALL (6) LOW-ORDER 2 BYTES OF "FREEDISP" AND "FREEMOD PRESERVED FROM THE HCPFREE CALL WHICH ORIGINALLY OBTAINED THIS CONTROL BLOCK

 

FREBK Storage Layout

*** FREBK - FREE STORAGE BLOCK
*
*     +-------------------------------------------------------+
*   0 |                                                       |
*     =                       FRESTRT                         =
*     |                                                       |
*     +-------------------------------------------------------+
*
*** FREBK - FREE STORAGE BLOCK
*** Overlay for FRESTRT in FREBK
*
*     +-------------------------------------------------------+
*   0 |                       FREHEADR                        |
*     +-------------------------------------------------------+
*   8
*
*** Overlay for FRESTRT in FREBK
*** Overlay for FRESTRT in FREBK
*
*     +-------------------------------------------------------+
*   0 |                       FRETRALR                        |
*     |                                                       |
*     +-------------------------------------------------------+
*  10
*
*** Overlay for FRESTRT in FREBK
*** Overlay for FREHEADR in FREBK
*
*     +-------------+-------------+---------------------------+
*   0 |/////////////|  FREHSIZE   |         FREESFLG          |
*     +-------------+-------------+---------------------------+
*   8
*
*** Overlay for FREHEADR in FREBK
*** Overlay for FRETRALR in FREBK
*
*     +---------------------------+---------------------------+
*   0 |          FREEID           |         FREEEFLG          |
*     +---------------------------+---------------------------+
*   8 |         FREEDISP          |         FREEMOD           |
*     +---------------------------+---------------------------+
*  10
*
*** Overlay for FRETRALR in FREBK
*** Overlay for FREHEADR in FREBK
*
*     +---------------------------+---------------------------+
*   0 |         FREEPNT           |         FRETSIZE          |
*     +---------------------------+---------------------------+
*   8
*
*** Overlay for FREHEADR in FREBK
*** Overlay for FRETRALR in FREBK
*
*     +---------------------------+---------------------------+
*   0 |          FRETID           |         FRETMOD           |
*     +-------------+-------------+---------------------------+
*   8 |  FRETDISP   |                FREECALL                 |
*     +-------------+-----------------------------------------+
*  10
*
*** Overlay for FRETRALR in FREBK

 

FREBK Cross Reference

(contains links to field and bit definitions)
Symbol         Dspl Value
-------------- ---- -----

FREECALL 000A

FREEDISP 0008

FREEEFLG 0004

FREEID 0000

FREEMOD 000C

FREEPNT 0000

FREESFLG 0004

FREESIZE 0000

FREFSCBK 0004

FREHEADL 0000 00000008

FREHEADR 0000

FREHSIZE 0002

FRERECL 0000 00000003

FRESTRT 0000

FRESUBBK 0004

FRETDISP 0008

FRETID 0000

FRETMOD 0004

FRETRALL 0000 00000010

FRETRALR 0000

FRETSIZE 0004


This information is based on VM/ESA 2.4.0.
Last updated on 3 Aug 1999 at 11:55:54 EDT.
Copyright IBM Corporation, 1990, 1999