<> <> <> <> <> <> <> DIRECTORY YggEnvironment, YggInternal, YggOpenDoc, YggFileLockFormat, YggTransactionMap; YggFileLock: CEDAR DEFINITIONS = BEGIN LockMode: TYPE = YggEnvironment.LockMode; LockOption: TYPE = YggEnvironment.LockOption; PageNumber: TYPE = YggEnvironment.PageNumber; PageRun: TYPE = YggEnvironment.PageRun; AssertedPageLock: TYPE = LockMode [read..write]; -- subranges of LockMode as applied to files AssertedFileLock: TYPE = LockMode [read..readIntendWrite]; IntentionFileLock: TYPE = LockMode [intendRead..intendWrite]; AcquireFileLock: PROCEDURE [doc: YggOpenDoc.OpenDoc, requested: LockOption, minimum: LockMode]; <> <> ReleaseFileLock: PROCEDURE [doc: YggOpenDoc.OpenDoc]; <> <> <<>> IsWholeFileLock: PROCEDURE [lockID: YggInternal.LockID] RETURNS [BOOLEAN]; <> <<>> <<>> ReleaseFile: PROCEDURE [doc: YggOpenDoc.OpenDoc]; <> <> AcquirePageLocks: PROCEDURE [doc: YggOpenDoc.OpenDoc, pageRun: PageRun, requested: LockOption, minimum: AssertedPageLock]; <> <> ReleasePageLocks: PROCEDURE [doc: YggOpenDoc.OpenDoc, pageRun: PageRun, mode: LockMode _ read]; <> AcquireSizeLock: PROCEDURE [doc: YggOpenDoc.OpenDoc, requested: LockOption, minimum: AssertedPageLock]; <> <> AcquireVolumeGroupLock: PROCEDURE [volumeGroupID: YggEnvironment.VolumeGroupID, trans: YggTransactionMap.TransHandle, requested: LockOption, minimum: AssertedPageLock]; <> <> END. <> <> <<>>