DIRECTORY YggEnvironment USING[PageNumber], YggFileMap USING[Handle], 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: YggFileMap.Handle, 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[fileHandle: YggFileMap.Handle, 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 6YggFilePageMgrLru.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 March 23, 1988 11:17:20 am PST 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šžœ,˜1—šœ˜Jšžœ˜J˜J˜——Jšœžœž œ˜&J˜Jšž˜J˜JšœΧ™ΧJ˜J˜J˜šΟnœž œ/˜QJ˜šœ™Jšœžœ˜ J˜——šŸœž œ0˜TJšœ™J˜J˜—šŸœž œ0˜QJšœžœ˜Jšœ™J˜—šŸœž œ ˜/Jšœ*žœ žœ ˜LJšœX˜XJšœ˜Jšœ™Jšœv™vJ˜J˜—šŸœž œ0˜TJšœ™J˜J˜—šŸœž œ8˜VJšžœžœ˜Jšœ™Jšœ#™#—J˜J˜š Ÿ œž œžœžœ7žœžœ˜–Jšœ žœžœ ˜Jšœ™J˜—šœ žœžœP˜hJ˜J˜J˜—šŸœž œ žœ*ž˜XJšžœ˜Jšœ™J˜—šŸœž œžœ žœ˜;Jšœ™J˜J˜J˜—Jšžœ˜˜J˜J˜—J˜lJ˜2J˜J˜™$K™—K™—…—„ A