Specifications
Operating System Routines
EXE$DEANONPAGED, EXE$DEANONPGDSIZ
EXE$DEANONPAGED, EXE$DEANONPGDSIZ
Deallocates a block of memory and returns it to nonpaged pool.
Module
MEMORYALC
Input
Location Contents
R0 Address of block to be deallocated
R1 Size of block in bytes, if from variable pool
(EXE$DEANONPGDSIZ only)
IRP$W_SIZE Size of block in bytes (EXE$DEANONPAGED only)
IRP$B_TYPE Type of block to be deallocated
(EXE$DEANONPAGED only)
Note
The MSB of field IRP$B_TYPE must be zero, unless it is definning a
shared memory structure.
Output
Location Contents
R1 and R2 Destroyed
Synchronization
EXE$DEANONPAGED and EXE$DEANONPGDSIZ execute at the caller’s IPL,
at IPL$_SYNCH holding the SCHED spinlock, and at IPL$_POOL holding the
POOL spinlock. As a result, the caller cannot be executing above IPL$_SYNCH.
EXE$DEANONPAGED and EXE$DEANONPGDSIZ return control to the caller
at the caller’s IPL. The caller retains any spinlocks it held at the time of the call.
Description
EXE$DEANONPAGED and EXE$DEANONPGDSIZ deallocate the specified block
of memory to nonpaged dynamic memory, returning it to a lookaside list or the
variable region of nonpaged pool as appropriate. These routines also report to the
scheduler the availability of the deallocated pool.
EXE$DEANONPAGED issues a BADDALRQSZ bugcheck if the address of the
pool to be deallocated is not aligned on a 16-byte boundary.
If enabled by the SYSGEN parameter POOLCHECK, these routines overwrite
portions of the deallocated pool with a checksum and a one-byte pattern. This
action is helpful when tracking pool corruption problems.
Do not expect R0 to give good status upon returning, if it fails system bugchecked.
3–23