-- Transport Mechanism Filestore - private DEFS for heap object directory. -- -- [Juniper]MS>ObjectDirXDefs.mesa -- Andrew Birrell 3-Jun-81 12:59:45 -- -- M. D. Schroeder 7-Feb-83 15:28:39 DIRECTORY ObjectDirDefs USING [ObjectNumber, ObjectType, noObject], VMDefs USING [FullAddress]; ObjectDirXDefs: DEFINITIONS = BEGIN ObjectNumber: TYPE = ObjectDirDefs.ObjectNumber; gapObjectNumber: ObjectNumber = ObjectDirDefs.noObject; -- an object number that 'NewObject' will never return -- NewObject: PROCEDURE [VMDefs.FullAddress, ObjectDirDefs.ObjectType] RETURNS [ObjectNumber]; -- sets reference count to one -- ObjectBase: PROCEDURE [ObjectNumber] RETURNS [VMDefs.FullAddress]; -- Compactor interface -- DOPC: TYPE = LONG CARDINAL; -- "DeletedObjectPageCount"; see comments in GetObjectState ObjectState: TYPE = {inUse, unused, duplicate}; GetObjectState: PROCEDURE [ obj: ObjectNumber, where: VMDefs.FullAddress, dorpc: DOPC -- "r" = read -- ] RETURNS [ObjectState]; -- If object's reference count is non-zero, returns "inUse". -- If reference count is zero, but base#where, returns "duplicate" -- Otherwise returns "unused", and marks object as free with dopc=dorpc -- Object numbers are re-used only if their dopc is <= compactor's -- most recently reported dofpc. ReportDofpc: PROCEDURE [dofpc: DOPC -- "f" = flushed -- ]; -- Compactor has overwritten objects whose dopc is <= dofpc. MoveObject: PROCEDURE [ObjectNumber, VMDefs.FullAddress]; -- Compactor has moved start of object to given address -- ReleaseObject: PROCEDURE [obj: ObjectNumber]; -- To be used by Write.HeapAbandonWrite when a writer has been abandoned. -- The reference count for object must be zero. -- The object cannot be a "temp" object. END.