Basic System Problem Analysis - August 2003

33
Table Management
The use of table management in the MPE/iX OS is so pervasive that it warrants this
mention.
Table management is essentially a centralized method for managing an object. A object is
created and then transformed into a table. The table consists of a “header” and a “body”.
The header is formatted using the type “TBL_HDR”. Each entry in the body portion will
be whatever type the owner decides to use.
Tables can have various management types the most common being LIFO, last in first
out, FIFO, first in first out and monotonic, meaning each entry in the table retains it
position. The PLFD table is an example of a monotonic table. Each table entry or PLFD
corresponds to a file number. So file number 10 needs to remain in the 10
th
position, it
cannot be linked into a list after being closed because that reference would be lost.
A characteristic of a table-management table is that the first two words of the table
header will be a pointer to itself. But it is important to stress that any object with this
characteristic is not necessarily a table. An example of that would be the System Globals
structure which is always found at address a.c0000000
$21c ($70) nmdat > dv a.c0000000,2
VIRT $a.c0000000 $ 0000000a c0000000
This is not a table header. The top portion of system globals is where we keep the KSO
(known system object) pointers so KSO 0 is System Globals.
The TBL_INFO macro is quite useful in formatting table headers. It will decode the
various table options and display information about the cache lists (LIFO or FIFO). One
other thing it will do is walk down through the list of free entries which can take a while
depending on how many there are. So if the macro appears to pause give it a few seconds
before stopping it with a control-Y.