DIRECTORY ConstArith; YggInternal: DEFINITIONS = BEGIN FileHandle: TYPE = REF FileObject; -- base type of FileMap.Handle FileObject: TYPE; FileInstanceHandle: TYPE = REF FileInstanceObject; -- base type of FileInstance.Handle FileInstanceObject: TYPE; OpenFileHandle: TYPE = REF OpenFileObject; -- base type of OpenFileMap.Handle OpenFileObject: TYPE; LeaderPageHandle: TYPE = REF LeaderPageObject; LeaderPageObject: TYPE; FPMFileHandle: TYPE = REF FPMFileObject; -- base type of FilePageMgr.FPMFileHandle FPMFileObject: TYPE; LockID: TYPE = RECORD [entity: UniversalID, subEntity: ID2, subSubEntity: LockSubID]; UniversalID: TYPE [12]; -- can be compressed someday by implementing a separate map ID2: TYPE [4]; -- large enough to hold file ID within volume LockSubID: TYPE [8]; -- large enough to hold [tag, page number within file] nullLockIDRep: ARRAY [0..SIZE[LockID]/SIZE[UNIT]) OF WORD = [0,0,0,0,0,0]; nullLockID: LockID = LOOPHOLE[nullLockIDRep]; LockTransHeaderHandle: TYPE = REF LockTransHeaderObject; LockTransHeaderObject: TYPE; LogRecordID: TYPE = ConstArith.Const; nullLogRecordID, firstRecordID: LogRecordID = [zero, 0, 0]; lastRecordID: LogRecordID = [positive, LAST[CARD], LAST[CARD]]; LogRecordType: TYPE = MACHINE DEPENDENT { --ControlRecord-- noop (0), checkpointBegin, checkpointComplete, coordinatorBegin (10), coordinatorRegisterWorker, coordinatorCollecting, coordinatorCompleting, coordinatorComplete, workerBegin (30), workerReady, workerCompleting, workerComplete, --FileRecord-- writePages (100), writeLeaderPage, setSize, create, delete, lock, --Reserved-- reserved (200), (LAST[INTEGER]) }; -- s/b LAST[CARDINAL] but for compiler bug ControlRecord: TYPE = LogRecordType [noop..writePages); FileRecord: TYPE = LogRecordType [writePages..reserved); LogRecordPhaseType: TYPE = { analysis, -- only needed in analysis phase (e.g., transaction commit) redo, -- only needed in redo phase (e.g., writePages) undo, -- only needed in undo phase redoUndo, -- needed in both redo and undo phases other -- other records (e. g., checkpointBegin) }; TransHandle: TYPE = REF TransObject; -- Base type of TransactionMap.Handle TransObject: TYPE; WorkerOutcome: TYPE = {abort, readOnly, commit}; Difficulty: TYPE = {zero, normal, hard}; WorkLevel: TYPE = Difficulty [normal .. hard]; TransState: TYPE = {committed, aborted, ready}; CoordinatorHandle: TYPE = REF CoordinatorObject; CoordinatorObject: TYPE; END. ςYggInternal.mesa Copyright Σ 1987, 1988 by Xerox Corporation. All rights reserved. Last edited by: MBrown on January 31, 1984 11:44:24 am PST Kolling on October 28, 1983 2:13 pm Taft on April 10, 1983 5:11 pm Hauser, March 7, 1985 2:18:51 pm PST Carl Hauser, July 12, 1985 9:59:34 am PDT Bob Hagmann March 23, 1988 9:02:33 am PST File The LeaderPageHandle is defined here because it is referenced by the LogMap interface but is actually defined in LeaderPageImpl. FilePageMgr Lock Log Include lots of spares so that new LogRecordTypes can be introduced without invalidating existing log files. If you change these, keep the corresponding subranges (below) up-to-date. Identifies during which phase of recovery the record is needed. Transaction ΚH– "cedar" style˜šœ™IcodešœB™B—šœ™Jšœ*™*Jšœ#™#Jšœ™K™$K™)K™)—J˜šΟk ˜ Jšœ ˜ —J˜Iunitšœ  œ˜ J˜J˜šœ™J˜Jšœ œœΟc˜BJšœ œ˜J˜Jšœœœž#˜WJšœœ˜J˜Jšœœœž"˜NJšœœ˜J˜Jšœ€™€Jšœœœ˜.Jšœœ˜J˜J˜J˜—šœ ™ J˜Jšœœœž)˜SJšœœ˜J˜—šœ™J˜Jšœœœ@˜UJšœ œž;˜SJšœœž-˜