page of GC20-1807-7 As Updated April 1, 1981 by TNL GN25-0829
5. Extend high storage nucleus storage downward into the User Program Area, modifying FREELOWE in the 6. For variable requests, put all available pages from the user chains
and the user program area onto the nucleus chains, and allocate the
largest block available on either the low storage nucleus chains, or the high storage nucleus chains.
The DMSFRET macro releases free storage previously allocated with the DMSFREE macro. The format of the DMSFRET macro is: r-- I [label] DMSFRET I DWORDS=j I I I I I '-- label
DW ORDS= {' n }
(a)
LOC={laddr}
(1 ) r ,
ERR=lladdrl I *
L J r , I l(U)J t III J I r r "
r r
" I I,ERR=lladdrll I I I I I * II I IBALRII I L L .J.J L L is any valid Assembler language label.
is number of doublewords of storage to be released. DWORDS=n specifies the number of doublewords directly and DWORDS=(O} indicates that register 0 contains the number
of doublewords being released. Do not specify any
register other than register o.
is the address "laddr" is any
(load address)
address directly
in register 1.
register 1.
of the block of storage being released.
address that can be referred to in an LA
instruction. LOC=laddr specifies the
while LOC=(1) indicates the address is
Do not specify any register other than
is the return address if an error occurs. "laddr" is any
address that can be referred to by an LA (load address)
instruction. The error return is taken if there is a
macro coding error or if there is a problem returning the
storage. If an asterisk (*) is specified, the error
return address is the same as the normal return address.
There is no default for this operand. If it is omitted
and an error occurs, the system will abend. I indicates how control is passed to DMSFRET. Since DMSFRET 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). When DMSFRET is called, the block beinq released is placed on the
appropriate chain. At that point, the final update operation is
performed, if necessary, to FREELOWE, or to move pages from the
nucleus chain to the corresponding user chain. Similar update operations will be performed, when necessary, after
calls to DMSFREE, as well. Part 3. Conversational Monitor System (CMS) 251
April 1, 1981
RELEASING ALLOCATED STORAGE Storage allocated by the GETMAIN macro instruction may be released in
any of the following ways:
1. A specific block of such storage may be released by means of the
FREEMAIN macro instruction.
2. The STRINIT macro instruction releases
any previous GETMAIN requests.
all storage allocated by
3. Almost all CMS commands issue a STRINIT macro instruction. Thus,
executing almost any CMS command will cause all GETMAIN storage to
be released.
storage allocated by the DMSFREE macro instruction may be released in
any of the followinq ways:
1. A specific block of such storage may be released by means of the DMSFRET macro instruction.
2. Whenever any user routine or CMS command abnormally terminates (so
that the routine DMSABN is entered), and the abend recovery
facility of the system is invoked, all DMSFREE storage with TIPE=USER is released automatically.
Except in the case of abend recovery, storage allocated by the DMSFREE macro is never released automatically by the system. Thus,
storage allocated by means of this macro instruction should always be
released explicitly by means of the DMSFRET macro instruction. DMSFREE SERVICE ROUTINES The DMSFRES macro instruction is used by the system to request certain
free storage management services.
The format of the DMSFRES macro is: ,..---- I [label] I I I I I I I DMSFRES INIT1
INIT2
CHECK CKON CKOFF UREC CALOC r r" II I BALR II L L J.J
252 IBM VM/370 system Programmer's Guide
Previous Page Next Page