-- File: DynamicZonePrivate.mesa
-- Last edited by Levin:   5-Oct-80 18:09:47

DIRECTORY
  FSPDefs USING [ZonePointer],
  SegmentDefs USING [DataSegmentType];

DynamicZonePrivate: DEFINITIONS =

  BEGIN OPEN SegmentDefs;

  MDSZoneHandle: TYPE = POINTER TO MDSZoneObject;

  MDSZoneObject: TYPE = MACHINE DEPENDENT RECORD [
    procs (0:0..15): POINTER TO AllocProcs,
    fspZone (1:0..15): FSPDefs.ZonePointer,
    segType (2): DataSegmentType,
    id (3:0..15): STRING];

  AllocProcs: TYPE = MACHINE DEPENDENT RECORD [
    alloc (0): PROCEDURE [zone: MDSZoneHandle, size: CARDINAL] RETURNS [POINTER],
    dealloc (1): PROCEDURE [zone: MDSZoneHandle, object: POINTER]];

  firstSegType: DataSegmentType = 100B;
  lastSegType: DataSegmentType = LAST[DataSegmentType];

  SegTypeIndex: TYPE = [firstSegType/2..lastSegType/2];

  LargeNode: CARDINAL = 150;	-- must match value in FSP!

  AllocateNode: PROCEDURE [zone: MDSZoneHandle, size: CARDINAL] RETURNS [p: POINTER];

  DeallocateNode: PROCEDURE [zone: MDSZoneHandle, object: POINTER];

  GetPages: PROCEDURE [pages: CARDINAL, segType: DataSegmentType] RETURNS [POINTER];

  END.