DIRECTORY YggDIDMap USING[Document], YggEnvironment USING[PageNumber], YggInternal USING[FileHandle], YggFilePageMgrPrivateChunk USING [Chunk, ChunkType, ListChunkType, RefChunk], YggFilePageMgrPrivateFile USING [FPMFileHandle]; YggFilePageMgrLru: CEDAR DEFINITIONS = BEGIN PutMappedChunkOnLruList: PROCEDURE[refChunk: YggFilePageMgrPrivateChunk.RefChunk, lruListPlace: LruListPlace]; LruListPlace: TYPE = {mru, lru}; PutUnmappedChunkOnLruList: PROCEDURE[refChunk: YggFilePageMgrPrivateChunk.RefChunk]; GetOurChunkFromLruList: PROCEDURE [refChunk: YggFilePageMgrPrivateChunk.RefChunk, tellSweeperToHurry: BOOLEAN]; GetOtherChunkFromLruList: PROCEDURE [chunkType: YggFilePageMgrPrivateChunk.ListChunkType] RETURNS[mapped: BOOLEAN, refChunk: YggFilePageMgrPrivateChunk.RefChunk, fileHandle: YggInternal.FileHandle, startFilePageNumber: YggEnvironment.PageNumber]; RelinkChunkAsLruOnLruList: PROCEDURE[refChunk: YggFilePageMgrPrivateChunk.RefChunk]; UsingTooMuchOfCache: PROCEDURE[fPMFileHandle: YggFilePageMgrPrivateFile.FPMFileHandle] RETURNS [yes: BOOLEAN]; WaitToSweep: PROCEDURE [oldNeedToHurry: BOOLEAN, currentEpoch: NAT, chunkType: YggFilePageMgrPrivateChunk.ListChunkType] RETURNS[needToHurry: BOOLEAN, sweepList: LIST OF SweepItem]; SweepItem: TYPE = RECORD[doc: YggDIDMap.Document, startFilePageNumber: YggEnvironment.PageNumber]; InitializeLruLists: PROCEDURE[nChunks: ARRAY YggFilePageMgrPrivateChunk.ListChunkType OF NAT]; CheckCacheInCleanState: PROCEDURE RETURNS [clean: BOOLEAN]; END. Edit Log Initial: Kolling: 23-Feb-82 17:21:13: private defs file for the lru lists manager part of File Page Manager. Nodified: Hauser: February 20, 1985 3:10:03 pm PST 2YggFilePageMgrLru.mesa Copyright c 1985, 1988 by Xerox Corporation. All rights reserved. Last edited by: Kolling on January 24, 1984 12:58:35 pm PST Hauser, March 7, 1985 5:18:42 pm PST Bob Hagmann May 12, 1988 3:57:11 pm PDT See YggFilePageMgrPrivateFile 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. non system-fatal errors: none. non system-fatal errors: none. non system-fatal errors: none. 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. non system-fatal errors: none. non system-fatal errors: none. only called for normal type chunks. non system-fatal errors: none. non system-fatal errors: none. non system-fatal errors: none. Hauser, March 7, 1985 3:07:51 pm PST Added copyright Κ{˜šœ™Icodešœ Οmœ7™B—šœ™Jšœ+™+K™$K™'—J˜J˜JšΟk ˜ ˜Jšœ žœ ˜Jšœžœ ˜!Jšœ žœ ˜Jšœžœ,˜Mšœžœ˜0J˜J˜——Jšœžœž œ˜&J˜Jšž˜J˜JšœΧ™ΧJ˜J˜J˜šΟnœž œ/˜QJ˜šœ™Jšœžœ˜ J˜——šŸœž œ0˜TJšœ™J˜J˜—šŸœž œ0˜QJšœžœ˜Jšœ™J˜—šŸœž œ ˜/Jšœ*žœ žœ ˜LJšœ]˜]Jšœ˜Jšœ™Jšœv™vJ˜J˜—šŸœž œ0˜TJšœ™J˜J˜—šŸœž œ8˜VJšžœžœ˜Jšœ™Jšœ#™#—J˜J˜š Ÿ œž œžœžœ7žœžœ˜–Jšœ žœžœ ˜Jšœ™J˜—šœ žœžœJ˜bJ˜J˜J˜—šŸœž œ žœ*ž˜XJšžœ˜Jšœ™J˜—šŸœž œžœ žœ˜;Jšœ™J˜J˜J˜—Jšžœ˜˜J˜J˜—J˜lJ˜2J˜J˜™$K™—K™—…—¦ S