-- 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.