DIRECTORY Basics, PrincOps, VM; Space: DEFINITIONS IMPORTS VM = BEGIN wordsPerPage: CARDINAL = VM.wordsPerPage; PageNumber: TYPE = VM.PageNumber; PageCount: TYPE = VM.PageCount; PageOffset: TYPE = VM.PageCount; Interval: TYPE = RECORD [pointer: LONG POINTER, count: VM.PageCount]; nullInterval: Interval = [pointer: NIL, count: 0]; Access: TYPE = {readWrite, readOnly}; Life: TYPE = {alive, dead}; Usage: TYPE = [0..2048); unknownUsage: Usage = 0; ScratchMap: PROCEDURE [count: VM.PageCount, usage: Usage _ unknownUsage] RETURNS [pointer: LONG POINTER]; Unmap: PROCEDURE [pointer: LONG POINTER, returnWait: ReturnWait _ wait] RETURNS [nil: LONG POINTER]; ReturnWait: TYPE = {return, wait}; Activate: PROCEDURE [interval: Interval]; ActivateProc: PROCEDURE [proc: --GENERIC-- PROCEDURE]; Deactivate: PROCEDURE [interval: Interval]; DeactivateProc: PROCEDURE [proc: --GENERIC-- PROCEDURE]; ForceOut: PROCEDURE [interval: Interval]; Kill: PROCEDURE [interval: Interval]; SetAccess: PROCEDURE [interval: Interval, access: Access]; MakeReadOnly: PROCEDURE [interval: Interval] = INLINE { SetAccess[interval, readOnly]}; MakeWritable: PROCEDURE [interval: Interval] = INLINE { SetAccess[interval, readWrite]}; Allocate: PROCEDURE [count: VM.PageCount] RETURNS [interval: Interval]; Deallocate: PROCEDURE [interval: Interval]; LongPointerFromPage: PROCEDURE [page: VM.PageNumber] RETURNS [LONG POINTER] = INLINE { RETURN[VM.AddressForPageNumber[page]]}; PageFromLongPointer: PROCEDURE [pointer: LONG POINTER] RETURNS [VM.PageNumber] = INLINE { RETURN[VM.PageNumberForAddress[pointer]]}; PagesFromWords: PROCEDURE [wordCount: LONG CARDINAL] RETURNS [pageCount: VM.PageCount] = INLINE { RETURN[VM.PagesForWords[wordCount]]}; Error: ERROR [type: ErrorType]; ErrorType: TYPE = { alreadyAllocated, alreadyDeallocated, incompleteSwapUnits, invalidParameters, invalidProcedure, invalidSwapUnitSize, invalidWindow, stillMapped, notAllocated, notMapped, noWindow, pointerPastEndOfMemory, readOnly}; InsufficientSpace: ERROR [available: VM.PageCount]; IOError: ERROR [page: VM.PageNumber]; END. LOG 17-Mar-82 17:11:48 DKnutsen Created file from Space.mesa of 8-Aug-81. 12-Aug-82 9:46:08 DKnutsen Twiddles. 23-Aug-82 11:43:17 Luniewski Mods for long page numbers and counts. 30-Aug-82 15:15:56 DKnutsen Map gets life arg. 1-Sep-82 11:20:42 DKnutsen Add pilotResident class. 6-Oct-82 9:53:33 Luniewski Added Life parameter to MapAt. 24-Nov-82 19:45:02 Luniewski Window.file => File.File. 31-Mar-83 9:50:11 DKnutsen Result of Map and MapAt was named wrong. Get Page<=>LongPointer from Environment. 5-Apr-83 16:29:49 DKnutsen Deleted ClientUsage and PilotUsage. 23-Jun-83 16:17:13 Gibbons Removed default on count parameter of Window 6-Jul-83 17:52:42 DKnutsen ActivateProc arg is PROCEDURE, not UNSPECIFIED. Time: August 31, 1984 12:40:42 pm PDT By: Plass Action: Created Cedar PilotBridge version from version of 06-Jul-83 17:52:44 PDT >Space.mesa August 31, 1984 12:40:17 pm PDT by Plass Cedar PilotBridge version Copyright (C) Xerox Corporation 1982. All rights reserved. Basic parameters and types: Swapping commands: Access control: Explicit virtual memory allocation and management: Miscellaneous operations: Signals and errors: Not provided in Cedar version: Window, Map Class, SwapUnitOption, defaultSwapUnitOption, SwapUnitType, SwapUnitSize, defaultSwapUnitSize, GetMapUnitAttributes, GetSwapUnitAttributes, CopyIn, CopyOut, MDS, defaultBase, MapAt, UnmapAt, Pointer, PointerFromPage ÊܘJšœ>™>J™J˜Jšœ:™:J˜šÏk ˜ Jšœœ˜J˜—Jšœ œœœ˜˜Jš˜J˜Jšœ™J˜Jšœœœ˜)J˜Jšœ œœ ˜!J˜Jšœ œœ ˜J˜Jšœ œœ ˜ J˜Jš œ œœ œœ œ ˜EJ˜Jšœ#œ ˜2J˜Jšœœ˜%J˜Jšœœ˜J˜J˜J˜Jšœœ ˜J˜J˜šÏn œ œ3˜Hšœ œœ˜ J˜——šžœ œ œœ ˜GJšœœœ˜J˜—Jšœ œ˜"J˜Jšœ™J˜Jšžœ œ˜)J˜Jšž œ œÏc œ œ˜6J˜Jšž œ œ˜+J˜Jšžœ œŸ œ œ˜8J˜Jšžœ œ˜)J˜Jšžœ œ˜%J˜J˜Jšœ™J˜Jšž œ œ&˜:J˜šž œ œœ˜7J˜J˜—šž œ œœ˜7J˜ J˜J˜—Jšœ2™2J˜Jšžœ œ œ œ˜GJšž œ œ˜+J˜Jšœ™J˜šžœ œ˜4Jšœœœœ˜!Jšœœ˜'J˜—šžœ œ œœ˜6Jšœœœ˜"Jšœœ!˜*J˜—šžœ œ œœ˜4Jšœ œœ˜,šœœ˜%J˜——J˜Jšœ™J˜Jšœœ˜J˜šœ œ˜J˜MJ˜BJ˜EJ˜—Jšœœ œ ˜3J˜Jšœ œœ ˜%J˜šœÈœ7™‚J˜—Jšœ˜J˜J˜—Jš˜J˜J˜GJ˜'J˜E˜0J˜5J˜<—J˜8˜J˜QJ˜B—˜LJšœ3 œ œ˜N—šœ€˜€J˜——…— ¸Ò