<> <> <> <<>> <> <<>> DIRECTORY Camelot, Mach; YggCamelotSegment: CEDAR DEFINITIONS ~ BEGIN <> SegPort: TYPE = RECORD [ segment: Camelot.segmentDescT, port: Mach.portT ]; SegmentList: LIST OF SegPort; <> 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.