summaryrefslogtreecommitdiffstats
path: root/src/include/ipxe/tables.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/ipxe/tables.h')
-rw-r--r--src/include/ipxe/tables.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/include/ipxe/tables.h b/src/include/ipxe/tables.h
index 130486c67..74d437537 100644
--- a/src/include/ipxe/tables.h
+++ b/src/include/ipxe/tables.h
@@ -309,6 +309,31 @@ FILE_LICENCE ( GPL2_OR_LATER );
table_start ( table ) ) )
/**
+ * Get index of entry within linker table
+ *
+ * @v table Linker table
+ * @v entry Table entry
+ *
+ * Example usage:
+ *
+ * @code
+ *
+ * #define FROBNICATORS __table ( struct frobnicator, "frobnicators" )
+ *
+ * #define __frobnicator __table_entry ( FROBNICATORS, 01 )
+ *
+ * struct frobnicator my_frob __frobnicator = {
+ * ...
+ * };
+ *
+ * unsigned int my_frob_idx = table_index ( FROBNICATORS, &my_frob );
+ *
+ * @endcode
+ */
+#define table_index( table, entry ) \
+ ( ( unsigned int ) ( (entry) - table_start ( table ) ) )
+
+/**
* Iterate through all entries within a linker table
*
* @v pointer Entry pointer