Important: The information in this document is obsolete and should not be used for new development.
B*-Tree Control Blocks
When the File Manager mounts a volume, it reads the B*-tree header node for both the catalog file and the extents overflow file found on that volume and, for each file, creates a B*-tree control block in memory. (See the section "Header Nodes" on page 2-67 for a description of B*-tree header nodes.) The structure of a B*-tree control block is defined by theBTCBdata type.
TYPE BTCB = {B*-tree control block} RECORD btcFlags: SignedByte; {flag byte} btcResv: SignedByte; {reserved} btcRefNum: Integer; {file reference number} btcKeyCr: ProcPtr: {pointer to key comparison routine} btcCQPtr: LongInt; {pointer to cache queue} btcVarPtr: LongInt; {pointer to B*-tree variables} btcLevel: Integer; {current level} btcNodeM: LongInt; {current node mark} btcIndexM: Integer; {current index mark} btcDepth: Integer; {current depth of tree} btcRoot: LongInt; {number of root node} btcNRecs: LongInt; {number of leaf records in tree} btcFNode: LongInt; {number of first leaf node} btcLNode: LongInt; {number of last leaf node} btcNodeSize: Integer; {size of a node} btcKeyLen: Integer; {maximum length of a key} btcNNodes: LongInt; {total number of nodes in tree} btcFree: LongInt; {number of free nodes} END;
Field Description
btcFlags- A flag byte. Currently the following bits are defined:
Bit Meaning 4 Set if an existing index record must be deleted 5 Set if a new index record must be created 6 Set if the index key must be updated 7 Set if the block has changed since it was last flushed btcResv- Reserved.
btcRefNum- The file reference number of the catalog or extents overflow file corresponding to this control block.
btcKeyCr- A pointer to the routine used to compare keys.
btcCQPtr- A pointer to the cache queue.
btcVarPtr- A pointer to B*-tree variables.
btcLevel- The current level.
btcNodeM- The current node mark.
btcIndexM- The current index mark.
bthDepth- The current depth of the B*-tree.
btcRoot- The node number of the root node. The root node is the start of the B*-tree structure; usually the root node is the first index node, but
it might be a leaf node if there are no index nodes.btcNRecs- The number of data records (records contained in leaf nodes).
btcFNode- The node number of the first leaf node.
btcLNode- The node number of the last leaf node.
btcNodeSize- The size (in bytes) of a node. Currently, this is always 512.
btcKeyLen- The length of the key records in each node.
btcNNodes- The total number of nodes in the B*-tree.
btcFree- The total number of free nodes in the B*-tree.