-- CedarSnapshotPrivate.mesa
-- last edited by Levin: November 12, 1982 9:48 am
DIRECTORY
Boot USING [Location],
CedarSnapshot USING [CheckpointProc, RollbackProc],
File USING [Capability, ID, nullID, PageCount, PageNumber],
Space USING [PageCount],
Volume USING [ID];
CedarSnapshotPrivate: DEFINITIONS =
BEGIN
-- Performance Parameters --
initialSnapshotSize: File.PageCount = 500;
initialVMScriptPages: Space.PageCount = 3;
initialClientScriptPages: Space.PageCount = 1;
initialLinkScriptPages: Space.PageCount = 4;
maxReasonableSwapUnit: Space.PageCount = 128;
-- Procedure Registry
EnumerateCheckpointProcs: PROC [PROC [CedarSnapshot.CheckpointProc]];
EnumerateRollbackProcs: PROC [PROC [CedarSnapshot.RollbackProc]];
-- Feedback
Phase: TYPE = [0..37B];
Direction: TYPE = {checkpoint, rollback};
InitializeFeedback: PROC;
FinalizeFeedback: PROC;
SetPhase: PROC [phase: Phase, direction: Direction];
Twiddle: PROC;
-- File Management
FilePoint: TYPE = RECORD [fID: File.ID, firstPage: File.PageNumber];
nullFilePoint: FilePoint = [fID: File.nullID, firstPage: 0];
SnapshotFile: TYPE = LONG POINTER TO SnapshotFileDescriptor;
SnapshotFileDescriptor: TYPE = RECORD [
volume: Volume.ID,
cap: File.Capability,
firstFree: File.PageNumber];
PointAction: TYPE = {keep, clear};
InitializeSnapshotFile: PROC [volume: Volume.ID] RETURNS [SnapshotFile];
FinalizeSnapshotFile: PROC [snapshot: SnapshotFile, action: PointAction];
EnsureSnapshotFileSize: PROC [snapshot: SnapshotFile, size: File.PageCount];
PrepareForOutload: PROC [snapshot: SnapshotFile] RETURNS [disk Boot.Location];
InstallSnapshotFile: PROC [snapshot: SnapshotFile, location: disk Boot.Location];
GetSnapshotPoint: PROC [volume: Volume.ID, action: PointAction]
RETURNS [filePoint: FilePoint, valid: BOOL];
ValidateSnapshot: PROC [volume: Volume.ID] RETURNS [BOOL]; -- should be in CedarSnapshot.mesa
-- Synchronization
CorkHandle: TYPE = LONG POINTER TO CorkObject;
CorkObject: TYPE;
CorkRestOfWorld: PROC RETURNS [CorkHandle];
UncorkRestOfWorld: PROC [CorkHandle];
snapshotLock: MONITORLOCK; -- in CedarSnapshotRollback
END.