This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Help With CYG_HAL_TABLEs
- From: Jay Foster <jay dot foster at systech dot com>
- To: "'ecos-discuss at sources dot redhat dot com'" <ecos-discuss at sources dot redhat dot com>
- Date: Fri, 17 Oct 2003 11:23:16 -0700
- Subject: [ECOS] Help With CYG_HAL_TABLEs
I'm trying to use the CYG_HAL_TABLE macros to implement an extensible table.
My table entries aren't getting added to the table. I first suspected that
the linker was removing them, since there are no references to them, but I'm
not so sure, since other tables, such as the DEVTAB table encounter the same
situation, yet its entries get added.
In a header file, I declare the following:
#include <cyg/hal/hal_tables.h>
typedef struct myentry
{
STUFF HERE
} CYG_HAL_TABLE_TYPE myentry_t;
extern myentry_t __MYTABLE__[], __MYTABLE_END__;
#define MYTABLE_ENTRY(_l, arg, arg) \
myentry_t _l CYG_HAL_TABLE_ENTRY(myentrytype) = { \
arg, \
arg \
}
In a source file, I do:
#include <header file>
CYG_HAL_TABLE_BEGIN( __MYTABLE__, myentrytype );
CYG_HAL_TABLE_END( __MYTABLE_END__, myentrytype );
myentry_t *p;
for (p=&(__MYTABLE__[0]; p!=&(__MYTABLE_END__); p++
{
stuff
}
In another source file, I do:
#include <header file>
MYTABLE_ENTRY(l0, stuff);
MYTABLE_ENTRY(l1, stuff);
etc.
In my symbol table, I find entries for __MYTABLE__ and __MYTABLE_END__, but
no symbols in between for the table entries (l0, l1, etc.). There are no
references to the table entry labels, so I suspected the linker was removing
them. Other tables don't suffer from this, so I'm thinking it's something
else. What, I don't know. For example, in my symbol table I see:
__DEVTAB__
haldiag_io0
__DEVTAB_END__
yet there are no references to haldiag_io0, except for the DEVTAB_ENTRY()
macro.
Jay
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss