file OSMiscOps.mesa
last modified by Satterthwaite, December 10, 1982 10:45 am
Last Edited by: Maxwell, August 2, 1983 10:18 am
Last Edited by: Paul Rovner, November 21, 1983 9:36 am
DIRECTORY
BcdDefs: TYPE USING [VersionStamp],
PrincOps: TYPE USING [wordsPerPage];
OSMiscOps: DEFINITIONS = {
utilities
Address: TYPE = LONG POINTER;
pageSize: CARDINAL = PrincOps.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]};
functional version stamps
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]]};
unique ids
GenerateUniqueId: PROC RETURNS [BcdDefs.VersionStamp];
}.