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 Changed by MBrown on October 14, 1982 2:40 pm YggRestartFileImpl.mesa Copyright c 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 Added myFileStore parm to Read/WriteRestartRecord. 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" ΚE˜šœ™Icodešœ Οmœ1™<—šœ™Jšœ)™)K™+K™'—J˜šΟk ˜ Jšœ˜Jšœ ˜ Jšœ˜Jšœ˜Jšœ˜Jšœ ˜ Jšœ ˜ Jšœ˜J˜—šœž ˜!šž˜Jšœ˜Jšœ˜—šž˜Jšœ˜—Jšž˜Jšœ žœ˜)Jšœ žœ˜!Jšœ žœ˜-J˜Jšœ,žœ˜0J˜šΟnœžœžœžœ&˜MJšœ>˜>Jšžœ*žœžœ˜7J˜J˜—š Ÿœžœžœžœžœ˜1J˜2J˜2šœ!˜!Jšœ[˜[J˜Jš œžœžœžœžœ˜OJ˜kJ˜—JšœMžœ˜TJ˜J˜—šŸœžœžœžœ˜'J˜2J˜2šœ!˜!JšœZ˜ZJ˜Jš œžœžœžœžœ˜O˜J˜P—J˜—šœ ˜ Jšœ;žœ˜B—J˜J˜—Jšžœ˜J˜J˜—Jšžœž˜ J˜/J˜J˜-Jšœ2™2J˜J˜-JšœL™LJšœ$™$™%K™—™+K™—K™J˜—…—P ­