YggEnvironment.mesa
Copyright © 1985, 1987, 1988 by Xerox Corporation. All rights reserved.
Common definitions for public Yggdrasil interfaces
Converted from AlpineEnvironment.mesa
Last edited by:
MBrown on February 1, 1984 5:04:15 pm PST
Kolling on October 28, 1983 12:32 pm
Taft on April 8, 1983 5:02 pm
Hauser, March 7, 1985 2:09:45 pm PST
Willie-Sue, December 22, 1986 12:27:19 pm PST
Bob Hagmann March 23, 1988 8:56:48 am PST
DIRECTORY
Basics,
ConstArith,
Rope,
YggDummyRPC,
YggDummyFile;
YggEnvironment:
DEFINITIONS =
BEGIN
Identification and authentication (see YggDummyRPC.mesa and Lupine documentation for details)
Must fix this: Cedar RPC and Grapevine are not the right
Principal: TYPE = Rope.ROPE; -- an individual (Grapevine, Clearinghouse, ...???)
FileStore: TYPE = Principal; -- an Yggdrasil instance
RName: TYPE = Rope.ROPE; -- an arbitrary Grapevine RName (or other name server)
OwnerName: TYPE = Rope.ROPE; -- an Alpine owner, not necessarily an RName
AccessList: TYPE = LIST OF RName;
Conversation: TYPE = YggDummyRPC.Conversation;
File system
VolOrVolGroupID: TYPE = YggDummyFile.VolumeID;
VolumeID: TYPE = RECORD [VolOrVolGroupID];
VolumeGroupID: TYPE = RECORD [VolOrVolGroupID];
nullVolumeID: VolumeID = [YggDummyFile.nullVolumeID]; -- the ID of no volume
nullVolumeGroupID: VolumeGroupID = [YggDummyFile.nullVolumeID]; -- the ID of no volume group
FileID: TYPE = YggDummyFile.OldFP; -- volume-relative ID of a labeled file
nullFileID: FileID = YggDummyFile.nullOldFP; -- the ID of no file
UniversalFile:
TYPE =
RECORD [
-- globally permanently unique identification of a file
volumeID: VolumeID,
fileID: FileID];
nullUniversalFile: UniversalFile = [volumeID: nullVolumeID, fileID: nullFileID];
PageNumber: TYPE = INT; -- should be [0..maxPagesPerFile]
PageCount: TYPE = INT;
PageRun:
TYPE =
RECORD [
firstPage: PageNumber,
count: INT ← 1];
maxPagesPerFile: INT = YggDummyFile.PageCount.LAST;
WordNumber:
TYPE = ConstArith.Const;
This represents a word index (0-origin) into a file. This limits us to a 4 Exabyte file, which may be a problem eventually but not today. Writing a byte a nanosecond, this will last 130 centuries.
WordCount:
TYPE = WordNumber;
This represents a difference of two WordNumbers, the length of an file, etc.
DeviceCharacteristics: TYPE = REF DeviceCharacteristicsRep;
DeviceCharacteristicsRep:
TYPE =
RECORD [
wordsPerPage: CARD32,
bytesPerPage: CARD32,
logWordsPerPage: CARD16,
logBytesPerPage: CARD16];
Transactions
TransID: TYPE [12]; -- globally permanently unique capability for a transaction
nullTransIDRep: ARRAY [0..SIZE[TransID]/SIZE[WORD]) OF UNSPECIFIED = [0,0,0];
nullTransID: TransID = LOOPHOLE[nullTransIDRep]; -- ID of no transaction
Outcome: TYPE = {abort, commit, unknown};
CommitOrAbort: TYPE = Outcome [abort .. commit];
WorkerState: TYPE = {notReady, readOnlyReady, ready};
END.