<> <> <> DIRECTORY PrincOps USING [FrameSizeIndex, StateVector], VM USING [Interval, PageCount]; VMSideDoor: DEFINITIONS = BEGIN <<>> <> vmPages: VM.PageCount; <> rmPages: INT; <<>> <<"Snapshot the Frame Heap">> MarkerType: TYPE = MACHINE DEPENDENT {frame(0), deadSpace(1)}; FrameMarker: TYPE = MACHINE DEPENDENT RECORD [ marker(0): SELECT markerType(0:0..0): MarkerType FROM frame => [fsi(0:1..15): PrincOps.FrameSizeIndex], deadSpace => [count(0:1..15): NAT], -- count does NOT include FrameMarker ENDCASE]; FramesDescriptor: TYPE = LONG DESCRIPTOR FOR ARRAY OF WORD; <> StateVectorDescriptor: TYPE = LONG DESCRIPTOR FOR ARRAY OF PrincOps.StateVector; <<>> GetFrames: PROC RETURNS [frames: FramesDescriptor, stateVectors: StateVectorDescriptor]; <> <> <> AssignSpecialRealMemory: SAFE PROC [interval: VM.Interval]; <> ReleaseSpecialRealMemory: SAFE PROC [interval: VM.Interval]; <> <<>> END.