-- ResidentHeap.mesa (last edited by: Jose on: July 18, 1979 7:20 PM) --
DIRECTORY
Environment: FROM "Environment" USING [Base,first64K],
Zone: FROM "Zone" USING [Alignment, BlockSize, Handle, Status];
ResidentHeap: DEFINITIONS =
BEGIN
--This interface provides a small object allocator for resident (i.e., non-swappable) storage in the first 64K of VM. Objects can be accessed via 16-bit relative pointers.
--Alignment of the objects allocated is specified by the following type
Alignment: TYPE = Zone.Alignment;-- = {a1 (word aligned), a2 (double word aligned), a4 (quad word aligned), a8 (eight-word aligned), a16 (16-word aligned)}
--The following is the base pointer to the first 64K of virtual memory
first64K: Environment.Base = Environment.first64K; -- for upward compatibility
--The following provides access to the zone (not normally needed)
residentZone: READONLY Zone.Handle;
--The following procedures manage the resident heap
MakeNode: PROCEDURE [n: Zone.BlockSize, alignment: Alignment ← a1] RETURNS [node: Environment.Base RELATIVE POINTER, s: Zone.Status];
FreeNode: PROCEDURE [p: Environment.Base RELATIVE POINTER] RETURNS [s: Zone.Status];
SplitNode: PROCEDURE [p: Environment.Base RELATIVE POINTER, n: Zone.BlockSize] RETURNS [s: Zone.Status];
NodeSize: PROCEDURE [p: Environment.Base RELATIVE POINTER] RETURNS [n: Zone.BlockSize];
END.
LOG
Time: May 31, 1979 2:56 PMBy: LauerAction: Created file
Time: July 18, 1979 2:54 PMBy: KnutsenAction: Promoted Base and first64K into Environment.
Time: timeStampBy: yourNameAction: shortDescription