diff options
Diffstat (limited to 'sys/symtab/symtab.h')
-rw-r--r-- | sys/symtab/symtab.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/sys/symtab/symtab.h b/sys/symtab/symtab.h new file mode 100644 index 00000000..25f30ace --- /dev/null +++ b/sys/symtab/symtab.h @@ -0,0 +1,54 @@ +# SYMTAB definitions. + +define MAX_HASHCHARS 18 # max characters used in hash function +define SZ_ASCII 128 # max possible character values +define INC_START 0.50 # used in overflow algorithm +define INC_GROW 2 # growing factor for increment +define MAX_INCREMENT 32768 # max sbuf or stab increment +define MAX_SZKEY 256 # arbitrarily large number + +# Symbol table descriptor. + +define LEN_SYMTAB 256 +define MAGIC 0123124B + +define ST_MAGIC Memi[$1] # for error checking +define ST_NAME Memi[$1+1] # optional name for symbol table +define ST_LASTSYMBOL Memi[$1+2] # last element entered +define ST_NSYMBOLS Memi[$1+3] # number of symbols in table + # (extra space) +define ST_INDEX Memi[$1+5] # pointer to buffer of thread indices +define ST_INDEXLEN Memi[$1+6] # length of index + # (extra space) +define ST_SBUFP Memi[$1+10] # string buffer +define ST_SBUFLEN Memi[$1+11] # current size of string buffer +define ST_SBUFOP Memi[$1+12] # next location in string buffer +define ST_SBUFINC Memi[$1+13] # increment if overflow occurs +define ST_SBUFNGROW Memi[$1+14] # number of reallocs of sbuf + # (extra space) +define ST_STABP Memi[$1+20] # symbol table +define ST_STABLEN Memi[$1+21] # symbol table length +define ST_STABOP Memi[$1+22] # next location in symbol table +define ST_STABINC Memi[$1+23] # increment if overflow occurs +define ST_STABNGROW Memi[$1+24] # number of reallocs of stab + # (extra space) +define ST_ASCII Memi[($1+30)+$2] + +# Symstruct. STAB contains an array of these, each of which is linked both +# on a thread and on the global lifo list. + +define LEN_SYMSTRUCT 4 + +define E_NEXTHASH Memi[$1] # next element on thread +define E_NEXTGLOB Memi[$1+1] # next element on global list +define E_THREAD Memi[$1+2] # index of thread in INDEX array +define E_KEY Memi[$1+3] # index of key name + +define E_USERFIELDS ($1+LEN_SYMSTRUCT) +define E_BASE ($1-LEN_SYMSTRUCT) + +# Magic marker structure (for mark/free). + +define LEN_MARKER 2 +define M_SBUFOP Memi[$1] # saved string buffer offset +define M_NSYMBOLS Memi[$1+1] # nsymbols in table below marker |