-- LogBasicInternal.mesa -- For communication between modules of the LogBasic implementation -- Last edited by -- MBrown on October 3, 1982 5:37 pm DIRECTORY AlpineEnvironment, Log, LogRep; LogBasicInternal: DEFINITIONS = BEGIN PageNumber: TYPE = AlpineEnvironment.PageNumber; RecordID: TYPE = Log.RecordID; -- Exported by LogCoreImpl AdvanceChunk: PROC [] RETURNS [version: LogRep.PageVersion, pagesInChunk: INT, firstPagePtr: LONG POINTER]; -- ! Log.Error[logFull] -- Allocate a new chunk for end of log, and return info about it. -- firstPagePtr points to first word of first page of chunk, which is pagesInChunk pages. -- Error[logFull] is a server crash; it does not release the log core monitor. ForceTo: PROC [followingRecord: RecordID]; -- Return when all pages preceding followingRecord have been recorded on the disk. -- (This is NOT the same as LogBasic.Force, which must also ensure that if followingRecord --is the tail, then the page containing followingRecord gets cleaned up.) OpenCoreForPut: PROC [ nextPage: PageNumber, version: LogRep.PageVersion, nextRecord: RecordID] RETURNS [pagesInChunk: INT, firstPagePtr: LONG POINTER]; -- Must be called before first call to Put, or a horrible error will occur. CloseCoreForPut: PROC []; -- Reinitializes log core. Caller should hold tail monitor to exclude concurrent calls --to AdvanceChunk. END. CHANGE LOG Created by MBrown on June 22, 1982 10:59 am Changed by MBrown on October 2, 1982 9:11 pm -- Changed name of module from LogPrivate.