YggCamelotSegment.mesa
Copyright Ó 1988 by Xerox Corporation. All rights reserved.
Bob Hagmann October 31, 1988 11:15:36 am PST
Describes the "recoverable storage resident" metadata for a Camelot Segment.
DIRECTORY
Camelot,
Mach;
YggCamelotSegment: CEDAR DEFINITIONS
~ BEGIN
Segment and ports lists
SegPort: TYPE = RECORD [
segment: Camelot.segmentDescT,
port: Mach.portT
];
SegmentList: LIST OF SegPort;
Page 0
SegmentUseType: TYPE = MACHINE DEPENDENT {undefined(0), normalData(101), systemMetaData(707), normalAndSystemMetaData(1066)};
PageUse: TYPE = MACHINE DEPENDENT {undefined(0), didLeader(1077), nextDID(1492)};
PageZero: TYPE = MACHINE DEPENDENT RECORD [
segmentId(0): Camelot.segmentIdT, -- given to us by Camelot, zero means uninitialized
segmentUse(1): SegmentUseType, -- normal, normal/system or system use only
metadataReplicated(2): BOOL, -- page 0 is always replicated on page 79; if set this is replicated on pages 80 and 159 too
allocationMapStartPage(3): CARD32, -- in pages; should be big enough to handle segment expansion
allocationMapSize(5): CARD32, -- in pages; should be big enough to handle segment expansion
segmentMaximum(7): CARD32, -- in pages; maximum seen so far
segmentLogicalPage0(9): CARD32, -- page number that is data page 0 (should be just after the allocation map, if no DID Map/NextDID)
DIDMapLogicalPage0(11): CARD32, -- page number that is page 0 (should be just after the allocation map; 0 means no DID Map)
NextDIDLogicalPage(13): CARD32 -- page number for where NextDID is stored (0 means no NextDID)
];
DIDMapLeaderPage: TYPE = MACHINE DEPENDENT RECORD [
sealDIDMapLeaderPage(0): PageUse,
runSize(1): CARD32, -- in pages; excludes this page; run starts at the next page
nextRun(3): CARD32 -- page number of next run; 0 if no more runs
];
NextDIDPage: TYPE = MACHINE DEPENDENT RECORD [
sealDIDMapLeaderPage(0): PageUse,
didLow(1): CARD32,
didHigh(3): CARD32
];
END.