<> <> <> <> <> <> 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.