of storage which crosses the boundary between two pages with different
storage keys. This restriction applies not only to SS instructions,
such as MVC and ZAP, but also to RS instructions, such as STft, and to RX instructions, such as ST and STD, which may have nonaligned addresses on
the Systea/370. An exception is the eVCL instruction which can be
restarted after crossing a page boundary because the registers are
updated when the paging exception occurs.
This restriction also applies to I/O instructions. If the key
specified in the CCW is zero, then the data area for input may not cross
the boundary between two pages with different storage keys. It can be seen that this system is most inefficient when
"storage-key thrashing" occurs --when the virtual machine with a VPK of
o jumps around, storing into pages with different VSK's. ERROR CODES FROft DeSFREE, DeSFRES, AND DftSFRET ! nonzero ccde, return f=o: or indicates that the request could not be satisfied. Register 15 contains
this return code, indicating which error has occurred. The codes below
apply to the DMSFRES, DMSFREE and DftSFRET macros.
Code ,-- 2
3 ErI2I DMSFREE -- Insufficient storage space is available to satisfy the
request fer free storage. In the case of a variable request,
even the minimum request could not be satisfied. DftSFREE or DMSFRET User storage pointers destroyed. DMSFREE or DMSFRET Nucleus storage pointers destroyed. 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 minimum request is greater than the maximum request. However,
the error is not detected if DftSPREE is able to satisfy the maximum request.
5 DMSFRET An invalid size was passed to the DMSFRET macro. This
error exit is taken if the specified length is net positive.
6 DMSFRET -- The block of storage which is teing released was never
allocated by DMSFREE. Such an error is detected if one of the
following errors is found:
a. The block is not entirely inside either the free storage area
in low storage or the user program area between FREELOWE and FREEUPPR. b. The block crosses
allocated for user
type storage.
a page-boundary which separates a page
storage from a page allocated for nucleus
c. The block overlaps another block already on the free storage
chain.
7 DMSFRET -- The address given for the block being released is not
a doubleword boundary.
8 DMSFRES -- An illegal request code was passed to the DMSPRES routine. Because all request codes are generated by the macro, this error code should never appear.
2-110 IBM VM/370 System Logic and Program Determination--Volume 2
9 DMSFRE, DMSFRET, or DMSFRES occurred.
An unexpected internal error
THE DMSFRES MACRO CMS uses the DMSFRES management services.
unpredictable results.
.acro to request special internal free storage Use of this macro by non-system routines causes
The format is: I label DMSFRES option
where "option" is one of the following:
INITl Performs the system first initialization routine.
INIT2 Performs the CMS system second initialization routine.
CHECK Invokes a routine that checks the validity of all current free
storage management pointers. CKON Sets a flag that causes the CHECK to be invoked for each call to DMSFREE or DMSFRET. CKOFF Turns off the above flag. UREC Assists ABEND recovery, by releasing all USER-type DMSFREE storage allocations. CALOC Assist ABEND recovery, by computing the total amount of allocated
storage, excluding the system disk MFD and the FREETAB table.
For a full discussion of the meanings of these options, refer to "DMSFRE Service Routines."
THE DMSKEY MACRO CMS uses the DMSKEY macro to modify the PSi storage protection key so
that the nucleus code can store data into protected storage. The format
is: NUCLEUS USER [label) DMSKEY {NUCLEUS[,NOSTACK]I USER(,NOSTACK)I LASTUSER[,NOSTACK]I RESET} The nucleus storage protection key is placed in the PSR, and
the old contents of the second byte of the PSi is saved in a
stack. Use of this option allows the program to store into
system storage, which is ordinarily protected.
The user storage protection key is placed in the PSi, and the
old contents of the second byte of the PSi is saved in a
stack. Use of this option prevents the program from inadvertently modifying nucleus storage, which is protected. CMS Method of Operation and Program Organization 2-111
Previous Page Next Page