mirror of https://github.com/ipxe/ipxe.git
[tables] Add ability to declare static table start and end markers
The compound statement expression within __table_entries() prevents the use of top-level declarations such as static struct thing *things = table_start ( THINGS ); Define TABLE_START() and TABLE_END() macros that can be used as: static TABLE_START ( things_start, THINGS ); static struct thing *things = things_start; Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/591/head
parent
0bbd896783
commit
1150321595
|
@ -252,6 +252,17 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|||
__attribute__ (( unused )); \
|
||||
__table_entries; } )
|
||||
|
||||
/**
|
||||
* Declare start of linker table entries
|
||||
*
|
||||
* @v entries Start of entries
|
||||
* @v table Linker table
|
||||
* @v idx Sub-table index
|
||||
*/
|
||||
#define __TABLE_ENTRIES( entries, table, idx ) \
|
||||
__table_type ( table ) entries[0] \
|
||||
__table_entry ( table, idx )
|
||||
|
||||
/**
|
||||
* Get start of linker table
|
||||
*
|
||||
|
@ -270,6 +281,14 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|||
*/
|
||||
#define table_start( table ) __table_entries ( table, 00 )
|
||||
|
||||
/**
|
||||
* Declare start of linker table
|
||||
*
|
||||
* @v start Start of linker table
|
||||
* @v table Linker table
|
||||
*/
|
||||
#define TABLE_START( start, table ) __TABLE_ENTRIES ( start, table, 00 )
|
||||
|
||||
/**
|
||||
* Get end of linker table
|
||||
*
|
||||
|
@ -288,6 +307,14 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|||
*/
|
||||
#define table_end( table ) __table_entries ( table, 99 )
|
||||
|
||||
/**
|
||||
* Declare end of linker table
|
||||
*
|
||||
* @v end End of linker table
|
||||
* @v table Linker table
|
||||
*/
|
||||
#define TABLE_END( end, table ) __TABLE_ENTRIES ( end, table, 99 )
|
||||
|
||||
/**
|
||||
* Get number of entries in linker table
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue