YggRestartFileImpl.mesa
Copyright © 1987 by Xerox Corporation. All rights reserved.
Last edited by
MBrown on January 30, 1984 5:50:55 pm PST
Carl Hauser, October 4, 1985 1:38:38 pm PDT
Bob Hagmann May 13, 1988 3:23:15 pm PDT
DIRECTORY
YggEnvironment,
YggInternal,
YggFile,
YggFilePageMgr,
YggLog,
YggLogBasic,
YggLogRep,
YggRestartFile;
YggRestartFileImpl: CEDAR MONITOR
IMPORTS
YggFile,
YggFilePageMgr
EXPORTS
YggRestartFile =
BEGIN
VolumeID: TYPE = YggEnvironment.VolumeID;
RecordID: TYPE = YggLog.RecordID;
WordNumber: TYPE = YggEnvironment.WordNumber;
restartFileHandle: YggInternal.FileHandle ← NIL;
EstablishRestartFile: PUBLIC ENTRY PROC [restartFile: YggEnvironment.DID] = {
restartFileHandle ← YggFile.FilesForDID[restartFile].contents;
IF YggFile.Info[restartFileHandle].size # 1 THEN ERROR;
};
ReadRestartRecord: PUBLIC ENTRY PROC [] RETURNS [
wordNumberForCheckpointCompleteRecord: WordNumber,
recordIDForCheckpointCompleteRecord: RecordID] = {
chunk: YggFilePageMgr.VMPageSet ←
YggFilePageMgr.ReadPages[fileHandle: restartFileHandle, pageRun: [firstPage: 0, count: 1]];
{
restartRecord: LONG POINTER TO YggLogRep.RestartRecord = LOOPHOLE[chunk.pages];
TRUSTED { [wordNumberForCheckpointCompleteRecord, recordIDForCheckpointCompleteRecord] ← restartRecord^; };
};
YggFilePageMgr.ReleaseVMPageSet[vMPageSet: chunk, releaseState: clean, keep: FALSE];
};
WriteRestartRecord: PUBLIC ENTRY PROC [
wordNumberForCheckpointCompleteRecord: WordNumber,
recordIDForCheckpointCompleteRecord: RecordID] = {
chunk: YggFilePageMgr.VMPageSet ←
YggFilePageMgr.UsePages[fileHandle: restartFileHandle, pageRun: [firstPage: 0, count: 1]];
{
restartRecord: LONG POINTER TO YggLogRep.RestartRecord = LOOPHOLE[chunk.pages];
TRUSTED {restartRecord^ ←
[wordNumberForCheckpointCompleteRecord, recordIDForCheckpointCompleteRecord]; };
};
YggFilePageMgr.ReleaseVMPageSet[
vMPageSet: chunk, releaseState: writeIndividualWait, keep: FALSE];
};
END.
CHANGE LOG
Created by MBrown on September 23, 1982 1:41 pm
Changed by MBrown on October 10, 1982 9:44 pm
Added myFileStore parm to Read/WriteRestartRecord.
Changed by MBrown on October 14, 1982 2:40 pm
Removed myFileStore parm to Read/WriteRestartRecord (now log this as part of
each checkpointComplete log record).
Hauser, March 8, 1985 11:07:33 am PST
Nodified, added copyright.
Carl Hauser, October 4, 1985 1:38:21 pm PDT
Change "Log" to "AlpineLog"