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(4): CARD32, -- in pages; should be big enough to handle segment expansion
segmentMaximum(5): CARD32, -- in pages; maximum seen so far
segmentLogicalPage0(6): CARD32, -- page number that is data page 0 (should be just after the allocation map, if no DID Map/NextDID)
DIDMapLogicalPage0(7): CARD32, -- page number that is page 0 (should be just after the allocation map; 0 means no DID Map)
NextDIDLogicalPage(8): 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(2): CARD32 -- page number of next run; 0 if no more runs
];