-- FilePageMgrLru.mesa -- Last edited by: -- Kolling on January 24, 1984 12:58:35 pm PST DIRECTORY AlpineEnvironment USING[PageNumber], FileMap USING[Handle], FilePageMgrPrivateChunk USING[Chunk, ChunkType, ListChunkType, RefChunk], FilePageMgrPrivateFile USING[FPMFileHandle]; FilePageMgrLru: CEDAR DEFINITIONS = BEGIN -- See FilePageMgrPrivateFile for implementation details. Things of especial note are: Mapping and unmapping do not go on while a chunk is on an lru list; therefore, the lru procedures can read Chunk.fileHandle and Chunk.startFilePageNumber. The FPMFileObject monitor must not be entered by a process holding the FilePageMgrLruImpl monitor. PutMappedChunkOnLruList: PROCEDURE[refChunk: FilePageMgrPrivateChunk.RefChunk, lruListPlace: LruListPlace]; -- non system-fatal errors: none. LruListPlace: TYPE = {mru, lru}; PutUnmappedChunkOnLruList: PROCEDURE[refChunk: FilePageMgrPrivateChunk.RefChunk]; -- non system-fatal errors: none. GetOurChunkFromLruList: PROCEDURE [refChunk: FilePageMgrPrivateChunk.RefChunk, tellSweeperToHurry: BOOLEAN]; -- non system-fatal errors: none. GetOtherChunkFromLruList: PROCEDURE [chunkType: FilePageMgrPrivateChunk.ListChunkType] RETURNS[mapped: BOOLEAN, refChunk: FilePageMgrPrivateChunk.RefChunk, fileHandle: FileMap.Handle, startFilePageNumber: AlpineEnvironment.PageNumber]; -- non system-fatal errors: none. -- if unmapped, we really got it; if mapped, just returns a hint but has also moved the chunk to the mru end of the list. RelinkChunkAsLruOnLruList: PROCEDURE[refChunk: FilePageMgrPrivateChunk.RefChunk]; -- non system-fatal errors: none. UsingTooMuchOfCache: PROCEDURE[fPMFileHandle: FilePageMgrPrivateFile.FPMFileHandle] RETURNS [yes: BOOLEAN]; -- non system-fatal errors: none. -- only called for normal type chunks. WaitToSweep: PROCEDURE [oldNeedToHurry: BOOLEAN, chunkType: FilePageMgrPrivateChunk.ListChunkType] RETURNS[needToHurry: BOOLEAN, sweepList: LIST OF SweepItem]; -- non system-fatal errors: none. SweepItem: TYPE = RECORD[fileHandle: FileMap.Handle, startFilePageNumber: AlpineEnvironment.PageNumber]; InitializeLruLists: PROCEDURE[nChunks: ARRAY FilePageMgrPrivateChunk.ListChunkType OF NAT]; -- non system-fatal errors: none. CheckCacheInCleanState: PROCEDURE RETURNS [clean: BOOLEAN]; -- non system-fatal errors: none. END. Edit Log Initial: Kolling: 23-Feb-82 17:21:13: private defs file for the lru lists manager part of File Page Manager.