DIRECTORY DBEnvironment USING[InternalError]; DBStoragePagetags: CEDAR DEFINITIONS IMPORTS DBEnvironment = BEGIN PageHeader: TYPE = MACHINE DEPENDENT RECORD[ pageTag: CARDINAL [0..256), dontCare: CARDINAL [0..256) ]; -- PageHeader 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 AssertPageIsTuplePage: PROC[p: LONG POINTER] = TRUSTED INLINE { SELECT LOOPHOLE[p,LONG POINTER TO PageHeader].pageTag FROM Tuple => {}; ENDCASE => ERROR DBEnvironment.InternalError; -- BadPageTag }; -- AssertPageIsTuplePage AssertPageIsSystemTuplePage: PROC[p: LONG POINTER] = TRUSTED INLINE { SELECT LOOPHOLE[p,LONG POINTER TO PageHeader].pageTag FROM SystemTuple => {}; ENDCASE => ERROR DBEnvironment.InternalError; -- BadPageTag }; -- AssertPageIsSystemTuplePage AssertPageIsAnyTuplePage: PROC[p: LONG POINTER] = TRUSTED INLINE { SELECT LOOPHOLE[p,LONG POINTER TO PageHeader].pageTag FROM Tuple, SystemTuple => {}; ENDCASE => ERROR DBEnvironment.InternalError; -- BadPageTag }; -- AssertPageIsAnyTuplePage AssertPageIsOverflowTuplePage: PROC[p: LONG POINTER] = TRUSTED INLINE { SELECT LOOPHOLE[p,LONG POINTER TO PageHeader].pageTag FROM OverflowTuple => {}; ENDCASE => ERROR DBEnvironment.InternalError; -- BadPageTag }; -- AssertPageIsOverflowTuplePage END. -- DBStoragePagetags Created by MBrown on February 15, 1980 11:08 AM Changed by MBrown on July 9, 1980 9:50 PM Changed by MBrown on August 13, 1980 4:51 PM Changed by MBrown on September 26, 1980 11:29 AM Changed by Willie-Sue on February 14, 1985 XFile: DBStoragePagetags.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Last edited by: MBrown on September 26, 1980 11:30 AM Cattell on January 14, 1983 2:04 pm Willie-Sue, February 15, 1985 11:09:19 am PST 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: First word of a page. Page tag values. in future: HashTable, BitVector, etc... Module History Added AssertPageIsTuplePage, AssertPageIsSystemTuplePage, AssertPageIsAnyTuplePage. Added AssertPageIsOverflowTuplePage. Change to new DBException. Made Cedar, added tioga formatting ʘšœ™Jšœ Ïmœ1™<—šœ™Jšœ&™&šœ#™#J™-—J˜J˜—šÏk ˜ Jšœžœ˜#J˜J˜—šœžœž ˜$Jšžœž˜˜JšœY™YJšœ`™`Jšœa™aJšœ;™;J˜—š œ žœžœž œžœ˜,Jšœ žœ ˜Jšœ žœ ˜JšœÏc˜Jšœ™J˜J˜—Jšœ™J˜JšœžœŸ2˜PJšœžœŸ%˜CJšœžœŸ0˜NJšœžœŸ˜:Jšœ žœ Ÿ#˜AJšœžœŸ4˜RJšœžœŸ&˜DJ˜šœ'™'J˜J˜—š Ïnœžœžœžœžœ˜?š žœžœžœžœžœž˜:J˜ —JšžœžœŸ ˜;JšœŸ˜J˜—š  œžœžœžœžœ˜Eš žœžœžœžœžœž˜:J˜—JšžœžœŸ ˜;JšœŸ ˜"J˜—š  œžœžœžœžœ˜Cš žœžœžœžœžœž˜:J˜—JšžœžœŸ ˜;JšœŸ˜J˜—š  œžœžœžœžœ˜Gš žœžœžœžœžœž˜:J˜—JšžœžœŸ ˜;JšœŸ"˜$J˜J˜——JšžœŸ˜J˜J˜Jšœ™J˜Jšœ.ž˜0J˜Jšœ(ž˜*JšœS™SJ˜Jšœ+ž˜-Jšœ$™$J˜Jšœ/ž˜1Jšœ™J™Jšœ*˜*J™"J˜—…—¾5