-- Drum.mesa  last edit, Johnsson  July 15, 1980  9:53 AM

DIRECTORY
  DebugFormat USING [CodeObject],
  MachineDefs USING [FileHandle, FileHint, FSHandle, GFHandle, PageNumber];

Drum: DEFINITIONS =
  BEGIN OPEN MachineDefs;

  Handle: TYPE = POINTER TO DrumItem;
  DrumItem: TYPE = RECORD [
    next: Handle,
    dseg: FSHandle,    -- for segment on drum
    co: DebugFormat.CodeObject,
    useg: FSHandle,	-- in user space (Alto)
    oldBase: PageNumber,
    oldFile: FileHandle,
    oldHint: FileHint];

  Alloc: PROCEDURE [useg: FSHandle] RETURNS [di: Handle];
  Remove: PROCEDURE [useg: FSHandle];
  Free: PROCEDURE [gf: GFHandle];
  MapUSeg: PROCEDURE [useg: FSHandle] RETURNS [seg: FSHandle];

  RemoteSeg: SIGNAL [seg: FSHandle];

  Initialize: PROCEDURE;
  FlushCoreCache: PROCEDURE;
  FlushCodeSegmentCache: PROCEDURE;

  END.