SKEY TCODE
April 1, 1981
FLCLB (X'40') -- Destroyed flag. Set if the chain has been
destroyed.
FLHC (X'20') -- High storage chain.
and user high-storage chains. Set for both the nucleus FLNU (X'10') -- Nucleus chain. Set for both the low storage
and high storage nucleus chains. FLPA (X'08') -- Page available. This flag is set if there is
a full 4K page available on the chain. This flag may be set
even if there is no such page available.
contains the one-byte storage key assigned to storage on this
chain.
contains the one-byte FREETAB table code for storage on this
chain. When DMSFREE with TYPE=USER (the default) is called, one or more of the
following steps are taken in an attempt to satisfy the request. As soon
as one of the following steps succeeds, then user free storage
allocation processing terminates.
1. search the low storage user chain for a block of the required size.
2. Search the high storage user chain for a block of the required
size.
3. Extend high storage user storage downward into the user program
area, modifying FREELOWE in the process.
4. For a variable request, put all available storage in the user program area onto the high storage user chain, and then allocate
the largest block available on either the high storage user chain
or the low storage user chain. The allocated block will not be
satisfactory unless it is larger than the minimum requested size. When DMSFREE with TYPE=NUCLEUS is called, the following steps are taken
in an attempt to satisfy the request, until one succeeds:
1. Search the low storage nucleus chain for a block of the required
size.
2. Get free pages from the low storage user chain, if any are
available, and put them on the low storage nucleus chain.
3. Search the high storage nucleus chain for a block of the required
size.
4. Get free pages from the high storage user chain, if they are
available, and put them on the high storage nucleus chain. 250 IBM VM/370 System Programmer's Guide
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
Previous Page Next Page