diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1995-05-11 17:39:37 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1995-05-11 17:39:37 +0000 |
commit | ac7d5ef06a6d6e8d84abbd1f0b82162725f98326 (patch) | |
tree | 9304cf759a73f2a1c6fd3191948f00e870af3787 /cpukit/libmisc/monitor/symbols.h | |
download | rtems-ac7d5ef06a6d6e8d84abbd1f0b82162725f98326.tar.bz2 |
Initial revision
Diffstat (limited to 'cpukit/libmisc/monitor/symbols.h')
-rw-r--r-- | cpukit/libmisc/monitor/symbols.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/cpukit/libmisc/monitor/symbols.h b/cpukit/libmisc/monitor/symbols.h new file mode 100644 index 0000000000..680ac6d2cf --- /dev/null +++ b/cpukit/libmisc/monitor/symbols.h @@ -0,0 +1,80 @@ +/* + * File: symbols.h + * + * Description: + * Entry points for symbol table routines. + * + * + * + * TODO: + * + */ + +#ifndef _INCLUDE_SYMBOLS_H +#define _INCLUDE_SYMBOLS_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + rtems_unsigned32 value; + char *name; +} rtems_symbol_t; + +#define SYMBOL_STRING_BLOCK_SIZE 4080 +typedef struct rtems_symbol_string_block_s { + struct rtems_symbol_string_block_s *next; + char buffer[SYMBOL_STRING_BLOCK_SIZE]; +} rtems_symbol_string_block_t; + +typedef struct { + + rtems_unsigned32 sorted; /* are symbols sorted right now? */ + + rtems_unsigned32 growth_factor; /* % to grow by when needed */ + + rtems_unsigned32 next; /* next symbol slot to use when adding */ + rtems_unsigned32 size; /* max # of symbols */ + + /* + * Symbol list -- sorted by address (when we do a lookup) + */ + + rtems_symbol_t *addresses; /* symbol array by address */ + + /* + * String list -- sorted by name (when we do a lookup) + * This is a duplicate of the info in table->addresses, but it's + * pretty small, so I don't worry about it. + */ + + rtems_symbol_t *symbols; /* symbol array */ + + /* + * String pool, unsorted, a list of blocks of string data + */ + + rtems_symbol_string_block_t *string_buffer_head; + rtems_symbol_string_block_t *string_buffer_current; + rtems_unsigned32 strings_next; /* next byte to use in this block */ + +} rtems_symbol_table_t; + +void rtems_symbol_table_destroy(rtems_symbol_table_t *table); +rtems_symbol_table_t *rtems_symbol_table_create(); +rtems_symbol_t *rtems_symbol_create(rtems_symbol_table_t *, + char *, rtems_unsigned32); +rtems_symbol_t *rtems_symbol_value_lookup(rtems_symbol_table_t *, + rtems_unsigned32); +rtems_symbol_t *rtems_symbol_name_lookup(rtems_symbol_table_t *, + char *); + +#define rtems_symbol_name(sp) ((sp)->name) +#define rtems_symbol_value(sp) ((sp)->value) + +#ifdef __cplusplus +} +#endif + +#endif /* ! _INCLUDE_SYMBOLS_H */ |