DIRECTORY BasicTime, RandomCard, UnsafeStorageExtras; TestTransientPageAllocator: PROGRAM IMPORTS BasicTime, RandomCard, UnsafeStorageExtras = { bufferRec: TYPE = RECORD [ address: LONG POINTER, size: CARDINAL _ 0 ]; bufferArray: ARRAY [1..128] OF bufferRec; freeRover: CARDINAL _ 1; tpz: UNCOUNTED ZONE = UnsafeStorageExtras.GetTransientPageUZone[]; maxListSize: INT = 7; -- Maximum size kept in the cache Test: PROC = { startTime: BasicTime.GMT = BasicTime.Now[]; [] _ RandomCard.Init[]; WHILE BasicTime.Period[startTime, BasicTime.Now[]] < 30 DO noAllocs: CARDINAL = RandomCard.Choose[min: 1, max: 5]; noScan: CARDINAL = RandomCard.Choose[min: noAllocs, max: noAllocs*3]; FOR free: CARDINAL IN [1..noScan] DO IF bufferArray[freeRover].size # 0 THEN { tpz.FREE[@bufferArray[freeRover].address]; bufferArray[freeRover].size _ 0; }; freeRover _ freeRover + 1; IF freeRover > 128 THEN freeRover _ 1; ENDLOOP; FOR alloc: CARDINAL IN [1..noAllocs] DO size: CARDINAL = RandomCard.Choose[min: 1, max: 8] * 256; address: LONG POINTER ; probe: CARDINAL; DescriptorType: TYPE = RECORD [SEQUENCE COMPUTED CARDINAL OF WORD]; address _ tpz.NEW[DescriptorType[size]]; probe _ RandomCard.Choose[min: 1, max: 128]; DO IF bufferArray[probe].size = 0 THEN { bufferArray[probe].size _ size; bufferArray[probe].address _ address; EXIT; }; probe _ probe + 1; IF probe > 128 THEN probe _ 1; ENDLOOP; ENDLOOP; ENDLOOP; FOR free: CARDINAL IN [1..128] DO IF bufferArray[free].size # 0 THEN { tpz.FREE[@bufferArray[free].address]; bufferArray[free].size _ 0; }; ENDLOOP; }; }. ΐTestTransientPageAllocator.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Last Edited by: Bob Hagmann, February 19, 1985 5:08:55 pm PST Declarations Test Procedures Κ˜˜headšœ ™ Icodešœ Οmœ1™<—J™=J˜šΟk ˜ J˜ Jšœ ˜ Jšœ˜—J˜šœž˜#Jšžœžœ˜2Jšœ˜J˜—™ šœ žœžœ˜Jšœ žœžœ˜Jšœžœ˜J˜—J˜Jšœ žœ žœ ˜)Jšœ žœ˜J˜Jšœž œžœ/˜BJ˜Jšœ žœΟc"˜9J˜—™šΟnœžœ˜Jšœžœ˜+Jšœ˜J˜šžœ3ž˜:Jšœ žœ%˜7Jšœžœ5˜Ešžœžœžœ ž˜$šžœ!žœ˜)Jšœ*˜*Jšœ ˜ J˜—Jšœ˜Jšžœžœ˜&Jšžœ˜—šžœžœžœž˜'Jšœžœ+˜9Jšœ žœžœ˜Jšœžœ˜Jšœžœžœžœžœžœžœžœ˜CJšœžœ˜(Jšœ,˜,šž˜šžœžœ˜%Jšœ˜Jšœ%˜%Jšžœ˜J˜—Jšœ˜Jšœ˜Jšžœ˜—Jšžœ˜—Jšžœ˜—šžœžœžœ ž˜!šžœžœ˜$Jšœ%˜%Jšœ˜J˜—Jšžœ˜—J˜J˜——J˜J˜—…— v