-- File: DBStoragePagetags.mesa -- Last edited by: -- MBrown on September 26, 1980 11:30 AM -- Cattell on January 14, 1983 2:04 pm DIRECTORY DBEnvironment USING[InternalError]; DBStoragePagetags: DEFINITIONS IMPORTS DBEnvironment = BEGIN -- This interface defines the values of the page tags found on all pages in the system. One --purpose of having a uniform page tag convention is to aid the scavenger. The page tag is stored --in the first byte of each page. The other byte of the first word is uncommitted. The PageHeader --declaration below is included for purposes of illustration: PageHeader: TYPE = MACHINE DEPENDENT RECORD[ pageTag: CARDINAL [0..256), dontCare: CARDINAL [0..256) ];--PageHeader -- First word of a page. -- Page tag values. Unused: CARDINAL = 0; -- unused page, obtained by extending Juniper file Free: CARDINAL = 1; -- page on segment or local free list AMap: CARDINAL = 2; -- page used to store segment address-map values Tuple: CARDINAL = 3; -- page used to store tuples SystemTuple: CARDINAL = 4; -- page used to store system tuples OverflowTuple: CARDINAL = 5; -- page used to store overflow tuples & long strings BTree: CARDINAL = 6; -- page used to store part of a B-tree -- in future: HashTable, BitVector, etc... AssertPageIsTuplePage: PROC[p: LONG POINTER] = INLINE { SELECT LOOPHOLE[p,LONG POINTER TO PageHeader].pageTag FROM Tuple => {}; ENDCASE => ERROR DBEnvironment.InternalError; -- BadPageTag };--AssertPageIsTuplePage AssertPageIsSystemTuplePage: PROC[p: LONG POINTER] = INLINE { SELECT LOOPHOLE[p,LONG POINTER TO PageHeader].pageTag FROM SystemTuple => {}; ENDCASE => ERROR DBEnvironment.InternalError; -- BadPageTag };--AssertPageIsSystemTuplePage AssertPageIsAnyTuplePage: PROC[p: LONG POINTER] = INLINE { SELECT LOOPHOLE[p,LONG POINTER TO PageHeader].pageTag FROM Tuple, SystemTuple => {}; ENDCASE => ERROR DBEnvironment.InternalError; -- BadPageTag };--AssertPageIsAnyTuplePage AssertPageIsOverflowTuplePage: PROC[p: LONG POINTER] = INLINE { SELECT LOOPHOLE[p,LONG POINTER TO PageHeader].pageTag FROM OverflowTuple => {}; ENDCASE => ERROR DBEnvironment.InternalError; -- BadPageTag };--AssertPageIsOverflowTuplePage END.--DBStoragePagetags -- Module History Created by MBrown on February 15, 1980 11:08 AM Changed by MBrown on July 9, 1980 9:50 PM -- Added AssertPageIsTuplePage, AssertPageIsSystemTuplePage, AssertPageIsAnyTuplePage. Changed by MBrown on August 13, 1980 4:51 PM -- Added AssertPageIsOverflowTuplePage. Changed by MBrown on September 26, 1980 11:29 AM -- Change to new DBException.