<> <> <> <> <> DIRECTORY AlpineEnvironment USING[PageNumber, wordsPerPage], CountedVM USING[Handle], FileMap USING[Handle], VM USING[PageCount, PageNumber, wordsPerPage]; FilePageMgrPrivateChunk: CEDAR DEFINITIONS = BEGIN RefChunk: TYPE = REF Chunk; Chunk: TYPE = RECORD[ chunkType: ChunkType, defWritePending: BOOLEAN, state: ChunkState, useCount: NAT, fileHandle: FileMap.Handle, startFilePageNumber: AlpineEnvironment.PageNumber, startVMPageNumber: VM.PageNumber, nVMPages: NAT, leaderVMHandle: CountedVM.Handle, prev: RefChunk, next: RefChunk <> <> <> ]; ChunkType: TYPE = {normal, log, leader, treeHeader, lruHeader, ostGeneral}; ClientChunkType: TYPE = FilePageMgrPrivateChunk.ChunkType[normal..leader]; ListChunkType: TYPE = FilePageMgrPrivateChunk.ChunkType[normal..leader]; ChunkState: TYPE = {undefined, valid, readInProgress, writeInProgress}; ChunkVMPageCount: ARRAY ListChunkType OF VM.PageCount = [normal: 4, log: 4, leader: 0]; ChunkFilePageCount: ARRAY ListChunkType OF VM.PageCount = [normal: 4, log: 4, leader: 0]; -- note all of leader fits exactly in one chunk, of size to be determined later. <> CompileTimeCheck1: [VM.wordsPerPage..VM.wordsPerPage] = AlpineEnvironment.wordsPerPage; <> <> ChunkAllocator: PROCEDURE [chunkType: ChunkType, permanent: BOOLEAN] RETURNS [refChunk: RefChunk]; <> ChunkIsDirty: PROCEDURE[refChunk: RefChunk] RETURNS [dirty: BOOLEAN]; <> Sweeper: PROCEDURE[chunkType: FilePageMgrPrivateChunk.ChunkType]; <> <> InternalFilePageMgrLogicError: ERROR; END. Edit Log Initial: Kolling: 22-Feb-82 16:18:32: a private defs file for the File Page Manager which sits between the rest of Alpine and Pilot. <> <> <<>>