-- VolumeImplInterface.mesa (last edited by: Luniewski on: September 17, 1980 10:12 AM)
DIRECTORY
File USING [ID, PageNumber, Type],
FileInternal USING [Descriptor, PageGroup],
LogicalVolume USING [Handle, VolumeAccessProc],
PhysicalVolume USING [ID, PageNumber],
PhysicalVolumeFormat USING [Handle, SubVolumeDesc],
System USING [UniversalID],
Volume USING [ID, PageCount, Type],
VolumeInternal USING [PageNumber];
VolumeImplInterface: DEFINITIONS=
BEGIN
-- These interfaces are used by PhysicalVolumeImpl VolumeImpl to get at needed procedures in each of them. These should probably not be called from any other module.
BarePvID: TYPE = System.UniversalID;
readOrWrite: TYPE = {read, readWrite};
AccessPhysicalVolumeRootPage: PROCEDURE [id: BarePvID, proc: PROCEDURE [PhysicalVolumeFormat.Handle], access: readOrWrite ← read];
CheckLogicalVolume: PROCEDURE [vID: Volume.ID];
LogicalVolumeCreate: PROCEDURE [pvID: PhysicalVolume.ID, size: Volume.PageCount, name: STRING, type: Volume.Type, minPVPageNumber: PhysicalVolume.PageNumber ← 1] RETURNS [Volume.ID];
LogicalVolumeErase: PROCEDURE [lvID: Volume.ID];
FindLogicalVolume: PROCEDURE [vID: POINTER TO READONLY Volume.ID] RETURNS [BOOLEAN];
GetLVStatus: PROCEDURE [vID: Volume.ID] RETURNS [onLine, open: BOOLEAN];
OpenInitialVolumes: PROCEDURE;
PinnedFileEnter: PROCEDURE[fd: FileInternal.Descriptor, grp: FileInternal.PageGroup];
PinnedFileFlush: PROCEDURE [fd: File.ID];
RegisterLogicalSubvolume: PROCEDURE [sv: PhysicalVolumeFormat.SubVolumeDesc, pvID: PhysicalVolume.ID];
RegisterVFiles: PROCEDURE [v: LogicalVolume.Handle];
SignalVolumeAccess: PROCEDURE [pVID: POINTER TO READONLY Volume.ID, proc: LogicalVolume.VolumeAccessProc];
SubvolumeOffline: PROCEDURE [lvID: Volume.ID, root: BOOLEAN];
SubvolumeOnline: PROCEDURE [lvID: Volume.ID, root: BOOLEAN];
UnregisterVFiles: PROCEDURE [v: LogicalVolume.Handle];
VFileEnter: PROCEDURE [volume: Volume.ID, file: File.ID, fileAndVolPage: File.PageNumber, nextPage: VolumeInternal.PageNumber, type: File.Type];
END.....
Time: October 7, 1979 11:05 AMBy: ForrestAction: Split out from VolumeImpl.
Time: March 7, 1980 11:46 PMBy: ForrestAction: Moved FreeVolumePages to LogicalVolume. Took Out LV[online, find, offline].
Time: May 28, 1980 4:05 PMBy: LuniewskiAction: PhysicalVolume => PhysicalVolumeFormat. Added UnregisterVFiles, GetHints. Made PinnedFileFlush be real. Deleted logical and physical volume specific stuff as part of reorganizing the volume implementation into separate logical and physical volume implementation modules.
Time: July 28, 1980 9:18 AMBy: LuniewskiAction: Addded LogicalVolumeCreate, LogicalVolumeErase and GetContainingPhysicalVolume so VolumeImpl need not export PhysicalVolume which fails due to a compiler "feature" of not permitting the specification the destination of an Export.
Time: September 17, 1980 10:12 AMBy: LuniewskiAction: Make SignalVolumeAccess take a LogicalVolume.AccessProc as a second argument.