-- File: IFSFileOpsC.mesa -- Last edited by Levin: 28-Jan-81 17:42:06 DIRECTORY IFSFilePrivate USING [IORequest, IORequestBlock], VMStorage USING [longTerm]; IFSFileOpsC: MONITOR IMPORTS VMStorage 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; VMStorage.longTerm.FREE[@request]; ENDLOOP; END; GetIORequestBlock: PUBLIC ENTRY PROCEDURE RETURNS [request: IORequest] = BEGIN IF freeList ~= NIL THEN {request _ freeList; freeList _ request.link} ELSE request _ VMStorage.longTerm.NEW[IORequestBlock]; END; FreeIORequestBlock: PUBLIC ENTRY PROCEDURE [request: IORequest] = BEGIN request.link _ freeList; freeList _ request; END; END.