INIT2
CHECK CKON CKOFF UREC CALoe All requests that are satisfied in high storage must be of a temporary nature, since all storage allocated 1n high storage is released when the second free
storage initialization routine is invoked. When CP's saved system facility is used, the CMS systea is saved at the point just after the A-Disk has been made accessible. It is necessary for DMSFRE to be used before
the size of virtual storage is known, since the saved
system can be used on any size virtual machine. Thus,
the first initialization routine initializes DMSFRE so
that limited functions can be requested, while the second
initialization routine performs the initialization
necessary to allow the full functions of DKSFRE to be
exercised.
invokes the second initialization routine. This routine
is invoked after the size of virtual storage is known, and it performs initialization necessary to allow all the
functions of DMSFRE to be used. The second
initialization routine performs the following steps: Releases all storage that has been allocated in the
high storage area. Allocates the FREETAB free storage tablee This table
contains one byte for each 4K page of virtual storage,
and so cannot be allocated until the size of virtual
storage is known. The FREETAB table is initialized, and all storage
protection keys are initialized. All completely unallocated 4K pages on the low storage
nucleus free storage chain are removed to the user
chain. Any other necessary operations are performed.
invokes a routine that checks all free storage chains for
consistency and correctness. Thus, it checks to see
whether or not any free storage pointers have been
destroyed. This option can be used at any time for
system debugging.
turns on a flag that causes the CHECK routine to be
invoked each time a call is made to DKSFREE or DMSFRET. This can be useful for debugging purposes (for example,
when you wish to identify the routine that destroyed free
storage management pointers). Care should be taken when
using this option, since the CHECK routine is coded to be
thorough rather than efficient. Thus, after the CKCN option has been invoked, each call to DMSFREE or DMSFRET will take much longer to be completed than before.
turns off the flag that was turned on by the CKOB option.
is used by DMSABB during the abend recovery process to
release all user storage.
is used by DMSABN after the abend recovery process has
been completed. It invokes a routine which returns, in
register 0, the number of doublewords of free storage
that have been allocated. This number is used by DMSAEN to determine whether or not the abend recovery has been
successful. CMS Introduction 2-23
r , I indicates how control is passed to Since DMSFRES IBALRI is a nucleus-resident routine, other nucleus-resident
L routines can branch directly to it, (TYPCALL=BALR) while
routines that are not nucleus-resident aust use SVC linkage (TYPCALL=SVC). ERROR CODES FROM DMSFRES, DMSFREE, AND DMSFRET A nonzero return code upon return from DMSFRES, DMSFREE, or DMSFRET indicates that the request could not be satisfied. Register 15 contains
this return code, indicating which error has occurred. The following
codes apply to the DMSFRES, DMSFREE, and DMSFRET macros.
2
3
Error (DMSFREE) Insufficient storage space is available to satisfy
the request for free storage. In the case of a variable
request, even the minimum request could not be satisfied. or DMSFRET) User storage pointers destroyed. (DMSFREE, DMSFRET, or DMSFRES) destroyed.
Nucleus storage pointers
4 (DMSFREE) An invalid size was requested. This error exit is
taken if the requested size is not greater than zero. In the
case of variable requests, this error exit is taken if the m1n1mua request is greater than the maximum request.
(However, the latter error is not detected if DMSFREE is able
5
to satisfy the maximum request.) (DMSFRET) An invalid size was passed to the
This error exit is taken if the specified
positive. DMSFRET macro.
length is not
6 (DMSFRET) The block of storage that is being released was never allocated by DMSFREE. Such an error is detected if one
of the following errors is found: The block does not lie entirely inside either the low storage free storage area or the user program area between FREELOVE and FREEUPPR. The block crosses a
allocated for USER NUCLEUS type storage.
page boundary
storage from that separates a page
a page allocated for The block overlaps another block already on the free
storage chain.
7 (DMSPRET) The address given for the tlock being released is
not doubleword aligned.
8 (DMSFRES) An invalid request code was passed to the DMSFRRS routine. Since all request codes are generated by the DMSPRES macro, this error code should never appear.
9 (DMSFREE, DMSFRET, or DMSFRES) Unexpected and unexplained
error in the free storage management routine.
2-24 IBM VM/310 System Logic and Program Determination--Voluae 2
Previous Page Next Page