-- Copyright (C) 1981, 1984 by Xerox Corporation. All rights reserved. -- IFSFileOpsC.mesa -- HGM, 15-Sep-85 8:53:54 -- Last edited by Levin, 28-Jan-81 17:42:06 DIRECTORY Heap USING [systemZone], IFSFilePrivate USING [IORequest, IORequestBlock]; IFSFileOpsC: MONITOR IMPORTS Heap EXPORTS IFSFilePrivate = BEGIN OPEN IFSFilePrivate; -- Global Variables -- freeList: IORequest; -- Procedures exported to IFSFilePrivate -- InitializeFreeList: PUBLIC PROCEDURE = {freeList ¬ NIL}; FinalizeFreeList: PUBLIC PROCEDURE = BEGIN UNTIL freeList = NIL DO request: IORequest ¬ freeList; freeList ¬ freeList.link; Heap.systemZone.FREE[@request]; ENDLOOP; END; GetIORequestBlock: PUBLIC ENTRY PROCEDURE RETURNS [request: IORequest] = BEGIN IF freeList ~= NIL THEN {request ¬ freeList; freeList ¬ request.link} ELSE request ¬ Heap.systemZone.NEW[IORequestBlock]; END; FreeIORequestBlock: PUBLIC ENTRY PROCEDURE [request: IORequest] = BEGIN request.link ¬ freeList; freeList ¬ request; END; END.