-- Store>FilePageTransfer.mesa (February 11, 1981 by Knutsen)
DIRECTORY
Environment USING [PageCount, PageNumber],
File USING [Capability, PageNumber],
FileInternal USING [Operation],
VM USING [Interval];
FilePageTransfer: DEFINITIONS =
BEGIN
Request: TYPE = RECORD[
file: File.Capability,
filePage: File.PageNumber,
memoryPage: Environment.PageNumber,
count: Environment.PageCount,
promise: BOOLEANFALSE, -- should Initiate MStore.Promise the page groups as they are actually initiated?
opSpecific: SELECT operation: Operation FROM
read => [priorityPage: File.PageNumber],
write => NULL,
ENDCASE];
Operation: TYPE = FileInternal.Operation[read..write];
Initiate: PROCEDURE [req: Request];
-- Starts an I/O operation on a block of pages. If req.promise=TRUE, calls MStore.Promise for each page group within the block just before it is actually initiated.
Wait: PROCEDURE RETURNS [VM.Interval];
-- Waits until the completion of the transfer of any page group of any previously Initiate’ed request.
END.
LOG
March 10, 1978 3:09 PMRedellCreated file
September 5, 1979 3:08 PMMcJonesAR1593: Added countInitiated result to Initiate, promise to Request
September 18, 1979 4:59 PMKnutsenImproved documentation.
November 26, 1979 12:24 PMGobbelWait now returns VM.Interval instead of PageNumber.
February 11, 1981 3:51 PMKnutsenInitiate no longer returns countInitialted. Initiate will promise the memory itself.