DIRECTORY Mach, YggEnvironment, YggFile, YggLog, YggRestartFile; YggRestartFileImpl: CEDAR MONITOR IMPORTS Mach EXPORTS YggRestartFile = BEGIN RecordID: TYPE = YggLog.RecordID; WordNumber: TYPE = YggEnvironment.WordNumber; ReadRestartRecord: PUBLIC ENTRY PROC [] RETURNS [wordNumberForCheckpointCompleteRecord: WordNumber, recordIDForCheckpointCompleteRecord: RecordID] ~ { mappedAddress: Mach.vmAddressT; kernCode: Mach.kernReturnT; pointerToCards: LONG POINTER TO ARRAY [0..4) OF CARD32; [mappedAddress: mappedAddress, kernCode: kernCode] _ Mach.vmAllocateWithPager[targetTask: Mach.taskSelf[], address: 0, size: 4096, anywhere: TRUE, pagingObject: [9], offset: 0, raiseSignal: TRUE]; pointerToCards _ LOOPHOLE[mappedAddress]; TRUSTED { recordIDForCheckpointCompleteRecord _ [sign: positive, low: pointerToCards[0], high: pointerToCards[1]]; wordNumberForCheckpointCompleteRecord _ [sign: positive, low: pointerToCards[2], high: pointerToCards[3]]; }; [] _ Mach.vmDeallocate[targetTask: Mach.taskSelf[], address: mappedAddress, size: 4096, raiseSignal: TRUE]; }; WriteRestartRecord: PUBLIC ENTRY PROC [ wordNumberForCheckpointCompleteRecord: WordNumber, recordIDForCheckpointCompleteRecord: RecordID] = { mappedAddress: Mach.vmAddressT; kernCode: Mach.kernReturnT; pointerToCards: LONG POINTER TO ARRAY [0..4) OF CARD32; [mappedAddress: mappedAddress, kernCode: kernCode] _ Mach.vmAllocateWithPager[targetTask: Mach.taskSelf[], address: 0, size: 4096, anywhere: TRUE, pagingObject: [9], offset: 0, raiseSignal: TRUE]; pointerToCards _ LOOPHOLE[mappedAddress]; TRUSTED { pointerToCards[0] _ recordIDForCheckpointCompleteRecord.low; pointerToCards[1] _ recordIDForCheckpointCompleteRecord.high; pointerToCards[2] _ wordNumberForCheckpointCompleteRecord.low; pointerToCards[3] _ wordNumberForCheckpointCompleteRecord.high; }; [] _ Mach.vmDeallocate[targetTask: Mach.taskSelf[], address: mappedAddress, size: 4096, raiseSignal: TRUE]; }; END. ’YggRestartFileImpl.mesa Copyright Σ 1989 by Xerox Corporation. All rights reserved. Last edited by Bob Hagmann May 23, 1989 8:30:29 am PDT Κξ˜šœ™Icodešœ<™<—šœ™K™'—J˜šΟk ˜ Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜J˜—šœ ˜!š˜J˜—š˜Jšœ˜—Jš˜Jšœ œ˜!Jšœ œ˜-J˜J˜š Οnœœœœœg˜–Jšœ˜Jšœ˜Jš œœœœœœœ˜7Jšœœ-œ˜ΔJšœœ˜)šœ˜ Jšœi˜iJšœk˜kJ˜—Jšœeœ˜kJ˜J˜—šžœœœœh˜Jšœ˜Jšœ˜Jš œœœœœœœ˜7Jšœœ-œ˜ΔJšœœ˜)šœ˜ Jšœ<˜˜>Jšœ?˜?J˜—Jšœeœ˜kJ˜J˜—Jšœ˜J˜J˜—J˜—…—’ "