label INIT1 IBIT2
is any valid Assembler language label.
invokes the first free storage initialization routine, so
that free storage requests can be made to access system disk. Before INIT1 is invoked, no free storage
requests may be made. After INIT1 has been invoked, free
storage requests may be made, but these are subject to
the following restraints until the second free storage
management initialization routine has been invoked: All requests for USER type storage are changed to
requests for NUCLEUS type storage. Error checking is limited before initialization is In particular, it is sometimes possible to
release a block that was never allocated. 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 system
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 DMSFRE to be
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 table. 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. Part 3. Conversational Monitor System (CMS) 253
turns on a flag that causes the CHECK routine to be
invoked each time a call is made to DMSFREE 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 CKeN 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 DMSABN during the abend recovery process to
release all user storage.
is used by DMSABN after the abend recovery process has
been 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. I indicates how control is passed to DMSFES. Since DMSFRES IBALRI is a nucleus-resident routine, other nucleus-resident
L J routines can branch directly to it, (TYPCALL=BALR) while
routines that are not nucleus-resident must use SVC linkage (TYPCALL=SVC). ERROR CODES FROM DMSFRES, DMSFREE, AND DMSFRET A nonzero return code upon return from DMSPRES, 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. Code -,- 2
Error (DftSFREE) 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. (DMSFREE 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
m1n1mum request is greater than the maximum request.
(However, the latter error is not detected if DMSFREE is able
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
254 IBM VM/370 System Programmer's Guide
Previous Page Next Page