<> <> <> <> <> <> DIRECTORY BcdDefs: TYPE USING [VersionStamp], VM: TYPE USING [wordsPerPage]; OSMiscOps: DEFINITIONS = { <> Address: TYPE = LONG POINTER; pageSize: CARDINAL = VM.wordsPerPage; Pages: PROC[n: CARDINAL] RETURNS[Address]; FreePages: PROC[base: Address]; Words: PROC[nWords: CARDINAL] RETURNS[base: Address] = INLINE { RETURN[Pages[(nWords + (pageSize-1)) / pageSize]]}; FreeWords: PROC[base: Address] = INLINE {FreePages[base]}; <> Stamp: TYPE [3]; MergeStamps: PROC[sum, item: Stamp] RETURNS[Stamp]; <<>> TimeToStamp: PROC[time: BcdDefs.VersionStamp] RETURNS[Stamp] = INLINE { RETURN[LOOPHOLE[time]]}; StampToTime: PROC[s: Stamp] RETURNS[BcdDefs.VersionStamp] = INLINE { RETURN[LOOPHOLE[s]]}; <> GenerateUniqueId: PROC RETURNS[BcdDefs.VersionStamp]; }.